Sqlmap tamper
准备
- tamper
- sqlmap中的模块,用于自定义编码payload绕过防护设备
- 本文使用tamper并不是为了绕过防护设备,而是服务端只接收编码后的数据,对于未编码的数据不会接收
- 查找加密算法,姿势很多,能找到就行,本次环境为rc4+base64+url编码
- js2py库,用于使用python调用js
编写tamper
- 需要调用外部js,即获取到的js加密代码
js2py库,用于调用js
这里遇到了一些问题,开始使用的方法是
eval_js()
,但是该方法只能调用单函数js文件,遇到多函数的js文件会调用最后一个函数
EvalJs()
,可以执行多函数js代码,例如:1
2
3
4
5
6with open('./get_key.js') as fp:
js = fp.read()
# ctx2 = execjs.compile(js)
context = js2py.EvalJs()
context.execute(js)
vl5x=context.getKey(cookie) //getKey是get_key.js中的方法,如果要调用其他方法,例如context.main即调用main方法payload处理
存在注入的参数要求必须有一个正确的可查到的的参数值,但是这个值也需要编码,放在数据包里面是肯定的不行的,因为包里面的数据不会通过tamper进行处理,所以只能通过tamper把payload进行处理,直接赋值个payload一个固定的值,并且一同调用js进行加密
- 到这里思路基本理清楚了,原参数–>调用tamper–>payload加密–>sqlmap测试,具体代码如下:
效果
sqlmap -r .\11.txt -p "xxx" --tamper=test.py --dbms=mssql --force-ssl --proxy=http://127.0.0.1:8080
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Y1Shui's blog!