Sqli-Labs-25~28

好事多磨;因为电脑坏了送去保修;这段时间便没法更博客;今天来补更一下


Less-25 Trick with OR & AND

老规矩查看源码


此时又发现了熟悉的preg_replace()函数
preg_replace()函数:preg_replace(要替换的东西,替换成啥东西,哪个里面的东西需要替换)
此时发现我们id内的or和and都被替换成空,后面i的意思是匹配大小写;所以导致我们的注入语句无法实现

此时我们发现or确实是被过滤了;所以我们就需要考虑如何绕过这个过滤
提供了以下几种方法:
(1)大小写变形 Or,OR,oR (2)编码,hex,urlencode (3)添加注释/or/ (4)利用符号 and=&& or=|| (5)双写绕过

此时尝试了一下发现大小写变型和添加注释和利用符号都是不行的
此时页面有显示位,也正常报错;和正常回显;所以便可以使用联合注入,报错注入,布尔盲注


Less-25a Trick with OR & AND Blind

查看源码


此时发现了和less-25一样的过滤,继续查看

此时发现了提示语句和报错语句都被注释了,所以此关只能采用盲注,布尔盲注和时间盲注皆可


Less-26 Trick with comments

查看源码

此时发现过滤了一大堆东西;包括我们重要的空格和注释符
此时提供一下空格的绕过:
特殊字符(%号家族):包括但不限于%20 %09 %0a %0b %0c %0d %a0
使用括号,记得要闭合每个括号
/%0a/
提供一下注释符的绕过:
%00截断
让每个引号都得以配对
此时使用%号进行绕过时发现会出现错误

这是因为这个靶场是我们自己搭建在windows平台,但是windows平台不能识别这些特殊字符
所以我们可以换种思路;有哪种注入方法对空格要求需求不大呢?
那就是报错注入和盲注;(在空格被过滤的情况下;如果报错信息正常回显;一般会使用报错注入)
报错注入:

布尔盲注:

时间盲注:


Less-26a Trick with comments

Less-26a和Less-26差不多,只是闭合形式发生了改变和将报错注释掉而已;所以此关宜采用盲注的方法进行注入攻击


Less-27 Trick with SELECT & UNION

查看源码,发现过滤了更多的东西


所以我们无法使用双写绕过;但是我们可以使用大小写替换
联合注入:

报错注入:

布尔盲注:

时间盲注:
不知道为啥我的时间盲注一直试不出来


Less-27a Trick with SELECT & UNION


与Less-27差不多;只是为数字型注入;不是字符型注入;然后注释了报错,并且无显示位;

所以此关选择盲注


Less-28 Trick with SELECT & UNION


这里过滤了/,–,#,空格,以及不区分大小写的union+select。
绕过方法:
绕过空格使用/%0a/
绕过union select过滤,由于源代码的过滤机制是只有碰到union连着select的时候才会过滤,因此我们使用union distinct union进行绕过。
也可以使用union%0bselect绕过union+select。