如何通过Python篡改脚本为SQLmap实现十六进制实体编码?
SQLmap 十六进制实体编码篡改脚本实现
实现思路
SQLmap 的 tamper 脚本需要实现一个 tamper 函数,负责接收原始 payload 并返回编码后的结果。核心逻辑是将 payload 中的每个字符转换为 &#x[十六进制字符码]; 格式的实体编码。
完整脚本代码
创建名为 hex_entity_encode.py 的文件,内容如下:
#!/usr/bin/env python3 from lib.core.enums import PRIORITY __priority__ = PRIORITY.NORMAL def dependencies(): pass def tamper(payload, **kwargs): if not payload: return payload encoded_payload = [] for char in payload: # 获取字符Unicode码点,转成小写十六进制字符串(去掉0x前缀) hex_code = hex(ord(char))[2:] encoded_payload.append(f'&#x{hex_code};') return ''.join(encoded_payload)
代码说明
__priority__:设置脚本优先级为 NORMAL,保证和其他 tamper 脚本兼容执行dependencies():声明脚本无额外依赖项tamper函数:- 遍历 payload 中的每个字符,用
ord(char)获取字符的 Unicode 码点 - 通过
hex()转换为十六进制格式,去掉默认的0x前缀后得到小写十六进制字符串 - 将字符格式化为
&#xXX;的实体编码格式,最终拼接成处理后的 payload
- 遍历 payload 中的每个字符,用
使用方法
在 SQLmap 命令中指定该 tamper 脚本即可生效:
sqlmap -u "目标测试URL" --tamper=hex_entity_encode.py [其他SQLmap参数]
比如输入 payload "abc",脚本会将其转换为 abc,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Trường An Tô Nguyễn
相关产品推荐
相关产品推荐

