tamper绕WAF详解
0x00 背景
sqlmap中的tamper脚本来对目标进行更高效的攻击。
由于乌云知识库少了sqlmap-tamper 收集一下,方便学习。 根据sqlmap中的tamper脚本可以学习过绕过一些技巧。 我收集在找相关的案例作为可分析什么环境使用什么tamper脚本。 小学生毕业的我,着能偷偷说一下多做一些收集对吸收知识很快。
0x01 start
脚本名:apostrophemask.py
作用:用utf8代替引号
1
|
Example: ( "1 AND '1'='1" ) '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871' |
Tested against: all
脚本名:equaltolike.py
作用:like 代替等号
1
2
3
4
5
|
Example: * 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
脚本名:space2dash.py
作用:绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
1
|
Example: ( '1 AND 9227=9227' ) '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227' |
Tested against: * MSSQL * SQLite
案例一:http://wooyun.org/bugs/wooyun-2010-062878
脚本名:greatest.py
作用:绕过过滤’>’ ,用GREATEST替换大于号。
1
|
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
作用:空格替换为#号 随机字符串 以及换行符
1
2
3
4
|
Example: * Input: 1 AND 9227=9227 * Output : 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227 |
Requirement:
MySQL Tested against:
MySQL 4.0, 5.0
参考:法克的一篇文章
脚本名:apostrophenullencode.py
作用:绕过过滤双引号,替换字符和双引号。
1
|
Example: tamper( "1 AND '1'='1" ) '1 AND %00%271%00%27=%00%271' |
Tested against:
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
脚本名:halfversionedmorekeywords.py
作用:当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
1
2
3
|
Example: ( "value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa" ) "value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa" |
Requirement:
- MySQL < 5.1
Tested against:
- MySQL 4.0.18, 5.0.22
脚本名:space2morehash.py
作用:空格替换为 #号 以及更多随机字符串 换行符
1
2
3
4
5
|
Example: * Input: 1 AND 9227=9227 * Output : 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227 |
Requirement: * MySQL >= 5.1.13 Tested
against: * MySQL 5.1.41
案例一:91ri一篇文章
脚本名:appendnullbyte.py
作用:在有效负荷结束位置加载零字节字符编码
1
|
Example: ( '1 AND 1=1' ) '1 AND 1=1%00' |
Requirement:
- Microsoft Access
脚本名:ifnull2ifisnull.py
作用:绕过对 IFNULL 过滤。 替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’
1
2
3
|
Example: ( 'IFNULL(1, 2)' ) 'IF(ISNULL(1),2,1)' |
Requirement:
MySQL
SQLite (possibly)
SAP MaxDB (possibly)
Tested against:
- MySQL 5.0 and 5.5
脚本名:space2mssqlblank.py(mssql)
作用:空格替换为其它空符号
Example: * Input: SELECT id FROM users * Output: SELECT%08id%02FROM%0Fusers
Requirement: * Microsoft SQL Server Tested against: * Microsoft SQL Server 2000 * Microsoft SQL Server 2005
ASCII table:
案例一: wooyun.org/bugs/wooyun-2010-062878
脚本名:base64encode.py
作用:用base64编码替换 Example: ("1' AND SLEEP(5)#") 'MScgQU5EIFNMRUVQKDUpIw==' Requirement: all
案例一: http://wooyun.org/bugs/wooyun-2010-060071
案例二: http://wooyun.org/bugs/wooyun-2010-021062
案例三: http://wooyun.org/bugs/wooyun-2010-043229
脚本名:space2mssqlhash.py
作用:替换空格
1
|
Example: ( '1 AND 9227=9227' ) '1%23%0AAND%23%0A9227=9227' Requirement: * MSSQL * MySQL |
脚本名:modsecurityversioned.py
作用:过滤空格,包含完整的查询版本注释
1
|
Example: ( '1 AND 2>1--' ) '1 /*!30874AND 2>1*/--' |
Requirement: * MySQL
Tested against:
- MySQL 5.0
脚本名:space2mysqlblank.py
作用:空格替换其它空白符号(mysql)
1
2
3
4
5
|
Example: * Input: SELECT id FROM users * Output : SELECT %0Bid%0BFROM%A0users |
Requirement:
- MySQL
Tested against:
- MySQL 5.1
案例一:wooyun.org/bugs/wooyun-2010-076735
脚本名:between.py
作用:用between替换大于号(>)
1
|
Example: ( '1 AND A > B--' ) '1 AND A NOT BETWEEN 0 AND B--' |
Tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0
案例一:wooyun.org/bugs/wooyun-2010-068815
脚本名:space2mysqldash.py
作用:替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
注:之前有个mssql的 这个是mysql的
1
|
Example: ( '1 AND 9227=9227' ) '1--%0AAND--%0A9227=9227' |
Requirement:
MySQL
MSSQL
脚本名:multiplespaces.py
作用:围绕SQL关键字添加多个空格
1
|
Example: ( '1 UNION SELECT foobar' ) '1 UNION SELECT foobar' |
Tested against: all
案例一: wooyun.org/bugs/wooyun-2010-072489
脚本名:space2plus.py
作用:用+替换空格
1
|
Example: ( 'SELECT id FROM users' ) 'SELECT+id+FROM+users' Tested against: all |
脚本名:bluecoat.py
作用:代替空格字符后与一个有效的随机空白字符的SQL语句。 然后替换=为like
1
|
Example: ( 'SELECT id FROM users where id = 1' ) 'SELECT%09id FROM users where id LIKE 1' |
Tested against:
- MySQL 5.1, SGOS
脚本名:nonrecursivereplacement.py
双重查询语句。取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters
1
|
Example: ( '1 UNION SELECT 2--' ) '1 UNIOUNIONN SELESELECTCT 2--' Tested against: all |
脚本名:space2randomblank.py
作用:代替空格字符(“”)从一个随机的空白字符可选字符的有效集
1
|
Example: ( 'SELECT id FROM users' ) 'SELECT%0Did%0DFROM%0Ausers' |
Tested against: all
脚本名:sp_password.py
作用:追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
1
|
Example: ( '1 AND 9227=9227-- ' ) '1 AND 9227=9227-- sp\_password' Requirement: * MSSQL |
脚本名:chardoubleencode.py
作用: 双url编码(不处理以编码的)
1
2
3
4
5
|
Example: * Input: SELECT FIELD FROM %20TABLE * Output : %2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545 |
脚本名:unionalltounion.py
作用:替换UNION ALL SELECT UNION SELECT
Example: ('-1 UNION ALL SELECT') '-1 UNION SELECT'
Requirement: all
脚本名:charencode.py
作用:url编码
1
2
3
4
5
|
Example: * 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 |
tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
脚本名:randomcase.py
作用:随机大小写 Example:
- Input: INSERT
- Output: InsERt
Tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
脚本名:unmagicquotes.py
作用:宽字符绕过 GPC addslashes
1
2
3
4
5
|
Example: * Input: 1′ AND 1=1 * Output : 1%bf%27 AND 1=1–%20 |
脚本名:randomcomments.py
作用:用/**/分割sql关键字
1
2
3
|
Example: ‘ INSERT ’ becomes ‘ IN //S//ERT’ |
脚本名:charunicodeencode.py
作用:字符串 unicode 编码
1
2
3
4
5
|
Example: * Input: SELECT FIELD%20FROM TABLE * Output : %u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045′ |
Requirement:
ASP
ASP.NET
Tested against:
Microsoft SQL Server 2000
Microsoft SQL Server 2005
MySQL 5.1.56
PostgreSQL 9.0.3
案例一: wooyun.org/bugs/wooyun-2010-074261
脚本名:securesphere.py
作用:追加特制的字符串
1
|
Example: ( '1 AND 1=1' ) "1 AND 1=1 and '0having'='0having'" |
Tested against: all
脚本名:versionedmorekeywords.py
作用:注释绕过
1
2
3
4
5
|
Example: * Input: 1 UNION ALL SELECT NULL , NULL , CONCAT( CHAR (58,122,114,115,58),IFNULL( CAST ( CURRENT_USER () AS CHAR ), CHAR (32)), CHAR (58,115,114,121,58))# * Output : 1/*! UNION **! ALL **! SELECT **! NULL */,/*! NULL */,/*!CONCAT*/(/*! CHAR */(58,122,114,115,58),/*!IFNULL*/( CAST (/*! CURRENT_USER */()/*! AS **! CHAR */),/*! CHAR */(32)),/*! CHAR */(58,115,114,121,58))# |
Requirement:
- MySQL >= 5.1.13
脚本名:space2comment.py
作用:Replaces space character (‘ ‘) with comments ‘/**/’
1
2
3
4
5
|
Example: * Input: SELECT id FROM users * Output : SELECT //id// FROM /**/users |
Tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
案例一:wooyun.org/bugs/wooyun-2010-046496
脚本名:halfversionedmorekeywords.py
作用:关键字前加注释
1
2
3
4
5
|
Example: * Input: value’ UNION ALL SELECT CONCAT( CHAR (58,107,112,113,58),IFNULL( CAST ( CURRENT_USER () AS CHAR ), CHAR (32)), CHAR (58,97,110,121,58)), NULL , NULL # AND ‘QDWa’= 'QDWa * Output: value’/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)), NULL, NULL#/*!0AND ‘QDWa’=' QDWa |
Requirement:
- MySQL < 5.1
Tested against:
- MySQL 4.0.18, 5.0.22
收集于: http://www.91ri.org/7852.html http://www.91ri.org/7869.html http://www.91ri.org/7860.html
tamper绕WAF详解的更多相关文章
- [转]Web应用防火墙WAF详解
通过nginx配置文件抵御攻击 0x00 前言 大家好,我们是OpenCDN团队的Twwy.这次我们来讲讲如何通过简单的配置文件来实现nginx防御攻击的效果. 其实很多时候,各种防攻击的思路我们都明 ...
- tamper绕WAF小结
sqlmap有一些非常好的脚本,在如下的地址中你能够发现它们.使用svn检查 https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev 事实上,脚本的 ...
- Sqlmap Tamper绕过脚本详解
apostrophemask.py 作用:将引号替换为UTF-8,用于过滤单引号 base64encode.py 作用:替换为base64编码 multiplespaces.py 作用:围绕SQL关键 ...
- 渗透测试学习 二十八、WAF绕过详解
大纲: WAF防护原理讲解 目录扫描绕过WAF 手工注入绕过WAF sqlmap绕过WAF 编写salmap绕过WAF 过WAF一句话编写讲解 菜刀连接绕过WAF webshell上传绕过WAF 提权 ...
- sqlmap命令详解
cookie注入:sqlmap.py -u 注入点 --cookie "参数" --tables --level 2 POST登录框注入:sqlmap.py -r 从文件读取数据 ...
- Sqlmap全参数详解
sqlmap全参数详解 sqlmap是在sql注入中非常常用的一款工具,由于其开源性,适合从个人到企业,从学习到实战,各领域各阶段的应用,我们还可以将它改造成我们自己独有的渗透利器.这款工具中,大大小 ...
- sqlmap用户手册详解【实用版】
网上的sqlmap教程很多,但是我自己备忘小笔记都是在我的电脑上存着了,万一我要出去玩的时候,有点忘了,还得再百度翻翻,还不如发到我自己知乎上,忘了立马一看就记着了.虽说我的sqlmap备忘小笔记汇总 ...
- 十八:SQL注入之堆叠及绕WAF
堆叠查询注入 (双查询注入) stacked injections(堆叠注入)从名词的含义就可以看到是一堆的SQL语句一起执行,而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一 ...
- Oracle体系结构详解
对于一门技术的学习,尤其是像Oracle database这种知识体系极其庞杂的技术来讲,从宏观上了解其体系结构是至关重要的.同时,个人认为,未必是专业DBA人员才需要了解其体系结构(固然对于数据库专 ...
随机推荐
- Java算法-插入排序
插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的 ...
- 控件 UI: 字体的自动继承的特性, Style, ControlTemplate
字体的自动继承的特性 Style 样式 ControlTemplate 控件模板 示例1.演示字体的自动继承的特性Controls/UI/FontInherit.xaml <Page x:Cla ...
- ECIF OCRM ACRM关系
ECIF :Enterprise Customer Information Facility 企业客户信息工厂: CRM:Customer Relationship Management 客户关系管 ...
- 浏览器上网 (Safari & Chrome)
浏览器上网 (Safari & Chrome) Command + L = 光标移到地址框 Command + R = 刷新页面 Command + + = 大屏幕的时候很实用,放大页面,基本 ...
- PHP解释器引擎执行流程 - [ PHP内核学习 ]
catalogue . SAPI接口 . PHP CLI模式解释执行脚本流程 . PHP Zend Complile/Execute函数接口化(Hook Call架构基础) 1. SAPI接口 PHP ...
- discuz /faq.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . 通过获取管理员密码 . 对管理员密码进行破解.通过在cmd5.com ...
- BROOTKIT Pinciple、Code Analysis(undone)
目录 . Rootkit相关知识 . BROOTKIT源码分析 . 关键技术点 . 防御策略 1. Rootkit相关知识 关于rootkit的相关其他知识,请参阅以下文章 http://www.cn ...
- MATLAB自定义配置
1.设置默认工作路径 一般来说MATLAB的默认工作路径是安装目录下的bin目录,但是,把这个作为自己的工作目录很不方便,以为里面已经有很多安装文件了,容易混淆: 每次打开再更改路径又太麻烦,所以最好 ...
- 数据结构算法C语言实现(十一)--- 3.4队列的链式表示和实现
一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:r ...
- 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例
一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...