Sqlmap Tamper编写
Sqlmap Tamper是sqlmap可以调用的脚本,已进行对payload的修改,如:双写、替换空格、编码等。
sqlmap可以使用--tamper
调用,编写使用Python。
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOWEST
def dependencies():
pass
def tamper(payload, **kwargs):
return payload
以上是一个最简单的tamper示例,简单到没有对payload进行任何更改。
这段脚本有四个部分:
-
导入所需的库
此处导入了sqlmap中的enums中存储优先级常量的PRIORITY
也可以导入sqlmap中其他的库,提供了很多封装好的函数和数据等。但是我对其自带的库并不熟悉,所以我大多会选择不引入其他的库而是自己编辑,除了下面的:
from lib.core.common import singleTimeWarnMessage from lib.core.enums import DBMS
分别是用以输出到sqlmap控制台的函数和一个数据库的枚举
-
设定一个优先级
优先级的设定是改变__priority__的值,可以是:
- LOWEST = -100
- LOWER = -50
- LOW = -10
- NORMAL = 0
- HIGH = 10
- HIGHER = 50
- HIGHEST = 100
-
def dependencies()
该函数用以申明脚本所支持或不支持的环境,当然也可以用作提示,如:
def dependencies(): singleTimeWarnMessage("这是我的tamper提示")
-
def tamper(payload, **kwargs):
该函数是tamper最重要的部分,第一个参数接收传入的payload,后一个则是其他参数,稍后会说。
payload的类型是字符串,所以可以像操作普通字符串一样操作它。
**kwargs传入的将会是一个字典,内容为空:
{'headers': {}, 'delimiter': '&', 'hints': {}}
可以调用
singleTimeWarnMessage
输出信息。