可以看到这一关过滤了所有的 space(空格)和 comment(注释),or和and,通过几次尝试,也可以发现这一关不仅过滤了url解码之后的空格,还过滤了一些特殊字符,如\ / /* # \\ -- ,可以在这一关的php源码里面看到
所以:
* 绕过空格过滤,特殊分隔 *
-
%0a——换行符
-
%0b——同a,较少被WAF检测
-
%0c——换页符
-
%0d——回车符
-
%09——水平制表符
-
()——括号,eg:
union(select(1),2,3)
以上url码均可以代替空格,并且我们还可以使用报错注入,这种注入方法使用空格比较少
并且这一关的or和and我们不能用双写绕过,因为双写绕过的前后需要空格区分,所以用符号&&(and)和 || (or)绕过过滤
下面代码用括号来代替空格,||‘ 来代替注释符
一:判断注入类型:
id=1’ 的时候报错,尝试闭合
?id=1'||'
闭合成功
二:开始注入(报错注入)
查列数无回显,使用报错注入
爆数据库名
?id=1'aandnd(updatexml(1,concat(0x7e,(select(database()))),1))||'