sql注入关于waf的绕过


提示:以下是本篇文章正文内容,下面案例可供参考

关于Waf绕过可大致分为三类:

1.白盒绕过
2.黑盒绕过
3.fuzz测试(模糊测试)

一、白盒绕过

通过源码分析,来进行绕过,比如sqli-labs的less-25题

二、黑盒绕过

1、架构层面绕过waf

1.1、寻找源网站绕过waf检测

主要针对的是云waf,找到原网站的真实地址,类似于CDN。

什么是云waf呢?比如你想对一个服务器进行sql注入测试,然后你对他输入sql注入语句,你输入的这个sql注入语句并不会直接到达服务器,如果这个服务器存在云waf保护,你输入的这个语句就得先传给云waf,等云waf检验没有问题之后才会才传给服务器,如果检验有问题,就扔给你了,不在传给服务器。

之所以说他像CDN,得先了解CDN是什么。比如有的服务器同时会有好多人来访问它,他不堪其重,它可以把自己的一部分数据保存在另外一个CDN服务器上,你访问它的时候,可能就会先传给CDN服务器,所以说他们两很像,服务器没有直接接收数据,而是先由中间人接收,然后没问题了,中间人才传给服务器

1.2、通过同网段绕过waf防护

主要针对于在一个网段中,可能经过的数据不会经过云waf,从而实现绕过

就相当于在同一个网段中,有A,B两台主机,你是想攻击A的,但A有waf防护,你不好攻击,你可以先攻击B,拿到B的权限后,再通过B去攻击A,可能B和A在同一个网段中,A没有对B设置waf防护

2、资源限制角度绕过waf

一般waf的执行需要优先考虑业务优先的原则,所以对于构造较大,超大数据包可能不会进行检测,从而绕过waf

一般情况下,get可以传送的数据包远小于post传送的数据包,所以可以使用post来进行传值绕过,但这样的漏洞一般存在于文件上传当中

3、协议层面绕过waf

3.1、协议为覆盖绕过waf

比如由于业务需要,只对get进行检测,而对post数据选择忽略

3.2、参数污染

比如index?id=1&id=2这种情况,waf可能值对id=1进行检测,所以可以通过id=2绕过

4、规则层面绕过

4.1、sql注释符绕过

union /**/select 我们将union select之间的空格使用注释符进行替换(适用于对union select之间的空格进行检测的情况)

union/crow%032#/select,我们可以在注释符中填写内容

union/cdsfsdasdsazxczxsadsadasdasdadasdasddsda2#/select构造较大数据

/!union select/ 内联注释,mysql独有

4.2、空白符绕过

mysql空白符:%09,%0A,%0B,%0D,%20,%0C,%A0;/XX/

%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格

正则空白符:%09,%0A,%0B,%0D,%20
%25其实就是百分号,所以%25A0也是空白符

4.3、函数分隔符号

将一个函数进行分割concat()
concat%2520(
concat/**/(
concat%250C(
concat%25a0(

4.4、浮点数词法解释

waf对于id=1可以进行检测,但对于id=1E0、id=1.0、id=\N可能无法进行检测

4.5、利用error-based进行sql注入

比如updatexml
extractvalue

4.6、mysql特殊语法

select {x schema_name} from {x information_schema.schemata}

select {x 1}

4.7、大小写绕过

因为mysql对大小写不敏感,所以如果他过滤了or或者and之类的,我们可以用Or,或者AnD之类的进行绕过

4.8、关键字重复

比如它过滤了or,我们可以用oorr进行代替,在他过滤or之后,换剩下了or

4.9、关键字替换

比如and替换为&&
or替换为||
like替换为=
!=替换为<>

三、模糊测试

可以使用burpsuite配合手工进行测试,然后配合脚本进行处理

比如
/*ddhjjasjkasdascxzjkcxzcmbnzx##'231321*/
它可以在注释符中的内容到达一定长度后,不在进性防护,但具体到哪一个长度,需要配合bp进行测试

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值