作者:Kali_MG1937
CSDN博客:ALDYS4
QQ:3496925334
未经许可,禁止转载
老样子,google了一个asp注入点
但有waf,拦截关键字
尝试绕过
GET | 结果 |
---|---|
.asp?id=1 and true# | 拦截 |
.asp?id=1 %61nd true# | 不拦截 |
对关键字中的部分字符进行Unicode编码成功绕过
利用charencode.py脚本带入sqlmap
sqlmap -u url --tamper=charencode.py -v 3
可是没有跑出注入点来
查看debug日志
返回的状态码全是999
明显是被拦截了
奇怪,为什么刚才对关键字编码没有拦截
进行手工注入分析原因
把and这个关键字进行编码
GET | 结果 |
---|---|
.asp?id=1 %61%6e%64 true# | 被某主机waf拦截! |
以此推测
很可能waf对unicode敏感,所以第一次绕过时只对关键字中的一部分进行编码,waf中配置的正则规则就无法匹配到关键字
如果关键字全部使用unicode编码,waf中专门匹配unicode关键字的正则规则就能匹配到危险字符
再次尝试绕过
既然waf规则对unicode敏感,仅仅编码其中一个关键字就无法匹配,那么很可能这个waf也有其他缺陷
我们已经知道此网站的web应用为ASP.NET,那么我们是否可以利用这个应用的特性来调戏waf呢?
已知此web应用在接收请求时,会把无用的%过滤掉
那么,在关键字中掺杂无用的百分号,waf是否可以匹配得到呢?
GET | 结果 |
---|---|
.asp?id=1 a%nd 1=1 | SQL语句成功查询 |
成功绕过!
sqlmap -u url --tamper=percentage.py
仍然有999的状态码返回,又被拦截了
是的,还有括号被拦截了
但经过多次测试证明只要对括号进行编码就能绕过waf
可percentage.py和charencode.py一起使用会使payload变成下面这样
预想的payload | 在同时使用这两个脚本时 |
---|---|
a%n%d 1=%u0028%1%%u0029 | a%25n%25d 1=%25u0028%251%25u0029 |
是的,这样的payload根本无法被服务器处理
那么只能对tamper脚本进行修改
修改脚本
我选取percentage.py这个脚本进行修改
通读这个脚本,是把payload拆分成一个个独立的字符
对每个字符进行判断,然后再在字符后加上%
只需向里面再插入几个判断:
如果字符是(就替换成%28
如果是)就替换成%29
保存为 hack.py
开始注入
直接在参数里带上这个脚本
跑出注入点
爆库成功