day02

8 阅读2分钟

sqlmap -tamper的使用

实际使用中,大部分上线的网站都有waf(原理是基于正则表达式过滤非法参数),而在sqlmap中 -tamper参数可以进行混淆(也可以自己加入)

常用分类

一、空格绕过类

脚本名作用适用场景
space2comment.py空格替换为 /**/空格被过滤,通用绕过
space2dash.py空格替换为 --%0AMySQL 空格过滤
space2hash.py空格替换为 #%0AMySQL 空格过滤
space2plus.py空格替换为 +GET 参数空格过滤
space2randomblank.py空格替换为随机空白符正则拦截固定空格替换
space2mssqlblank.py空格替换为 MSSQL 特殊空白符SQL Server 空格过滤
space2mysqlblank.py空格替换为 MySQL 特殊空白符MySQL 严格空格过滤
multiplespaces.py单个空格变多个空格简单空格过滤规则

二、关键字混淆绕过类

脚本名作用适用场景
randomcase.py关键字随机大小写简单正则关键字拦截
lowercase.py关键字全小写拦截大写关键字
randomcomments.py关键字插入随机注释正则匹配完整关键字
versionedkeywords.py关键字加 MySQL 版本注释MySQL 关键字黑名单
versionedmorekeywords.py多关键字增强版注释混淆严格关键字过滤
halfversionedmorekeywords.py轻量版版本注释混淆MySQL 轻量 WAF
nonrecursivereplacement.py关键字双重替换只做单次替换的 WAF

三、编码 & 字符替换类

脚本名作用适用场景
charencode.py单次 URL 编码基础字符过滤
chardoubleencode.py双重 URL 编码WAF 只做一次解码
charunicodeencode.pyUnicode 编码支持 Unicode 的 WAF
base64encode.py整个 Payload Base64 编码后端支持 base64 解码
htmlencode.pyHTML 实体编码前端 / 简单 WAF 过滤
numberencode.py数字进行 URL 编码数字被过滤

四、单引号 / 引号绕过类

脚本名作用适用场景
apostrophemask.py单引号替换为 UTF-8 全角单引号被拦截
apostrophenullencode.py单引号加空字节编码空字节可绕过的 WAF
escapequotes.py单引号加反斜杠转义简单引号过滤
unmagicquotes.py宽字节注入绕过 GPC开启 magic_quotes_gpc

五、运算符 & 函数替换类

脚本名作用适用场景
between.py= 替换为 BETWEEN比较运算符被过滤
equaltolike.py= 替换为 LIKE等号被过滤
greatest.py> 替换为 GREATEST比较符号被拦截
concat2concatws.pyCONCAT 替换为 CONCAT_WSCONCAT 被拦截
ifnull2ifisnull.pyIFNULL 替换为 IF (ISNULL)IFNULL 被过滤
hex2char.py十六进制转 CHAR 函数十六进制被过滤

六、逗号绕过类

脚本名作用适用场景
commalesslimit.pyLIMIT 逗号换 OFFSETMySQL LIMIT 逗号过滤
commalessmid.pyMID 逗号换 FROM 写法MySQL MID 函数逗号过滤

七、特定 WAF / 环境专用

脚本名作用适用场景
modsecurity.py绕过 ModSecurity 规则ModSecurity WAF
luanginx.py绕过 Nginx Lua WAFNginx+Lua 防护
bluecoat.py绕过 BlueCoat 代理 WAFBlueCoat 环境
securesphere.py绕过 SecureSphere WAFSecureSphere 防护
mysqlchar.py字符串转 CHAR ()MySQL 引号严格过滤
unionalltounion.pyUNION ALL → UNIONUNION ALL 被拦截
appendnullbyte.py末尾加空字节简单空字节绕过

最常用组合

```--tamper=space2comment,randomcase,versionedkeywords,charencode