作者:bystander 博客:http://leaver.me 论坛:法克论坛

目录

1.大小写绕过

2.简单编码绕过

3.注释绕过

4.分隔重写绕过

5.Http参数污染(HPP)

6.使用逻辑运算符 or /and绕过

7.比较操作符替换

8.同功能函数替换

9.盲注无需orand

10.加括号

11.缓冲区溢出绕过

1. 大小写绕过 这个大家都很熟悉,对于一些太垃圾的WAF效果显著,比如拦截了union,那就使用Union UnIoN等等。绕过

2.  简单编码绕过 比如WAF检测关键字,那么我们让他检测不到就可以了。比如检测union,那么我们就用%55 也就是U的16进制编码来代替U, union写成 %55nION,结合大小写也可以绕过一些WAF,你可以随意替换一个或几个都可以。。

也还有大家在Mysql注入中比如表名或是load文件的时候,会把文件名或是表明用16进制编码来绕过WAF都是属于这类。

3.  注释绕过 这种情况比较少,适用于WAF只是过滤了一次危险的语句,而没有阻断我们的整个查询

4.   分隔重写绕过 还是上面的例子,适用于那种WAF采用了正则表达式的情况,会检测所有的敏感字,而不在乎你写在哪里,有几个就过滤几个。。 我们可以通过注释分开敏感字,这样WAF的正则不起作用了,而带入查询的时候并不影响我们的结果

再给出一个例子说明用法

6. 使用逻辑运算符 or /and绕过

7.  比较操作符替换 包括!= 不等于,<>不等于,< 小于,>大于,这些都可以用来替换=来绕过, 比如上一个例子,要判断是不是74,假设=被过滤,那么我们可以判断是不是大于73,是不是小于75,然后就知道是74了。。很多WAF都会忘了这个。

8.  同功能函数替换 Substring()可以用mid(),substr()这些函数来替换,都是用来取字符串的某一位字符的。 Ascii()编码可以用hex(),bin(),也就是16进制和二进制编码替换 Benchmark() 可以用sleep()来替换,这两个使用在基于延时的盲注中,有机会给大家介绍 如果连这些都屏蔽了,还有一种新的方法

9.    盲注无需or和and 比如有这样一个注入点:

10. 加括号

11.缓冲区溢出绕过 刚刚写着把这个给忘了。这个是从国外一个博客看到的。