0x00 sqlmap tamper简介
sqlmap是一个自动化的SQL注入工具,而tamper则是对其进行扩展的一系列脚本,主要功能是对本来的payload进行特定的更改以绕过waf。
0x01 一个最小的例子
为了说明tamper的结构,让我们从一个最简单的例子开始
不难看出,一个最小的tamper脚本结构为priority变量定义和dependencies、tamper函数定义。
priority定义脚本的优先级,用于有多个tamper脚本的情况。
dependencies函数声明该脚本适用/不适用的范围,可以为空。
tamper是主要的函数,接受的参数为payload和**kwargs
返回值为替换后的payload。比如这个例子中就把引号替换为了\\'。
0x02 详细介绍
第一部分完成了一个最简单的tamper架构,下面我们进行一个更详细的介绍
tamper函数
tamper是整个脚本的主体。主要用于修改原本的payload。
举个简单的例子,如果服务器上有这么几行代码
dependencies函数
dependencies函数,就tamper脚本支持/不支持使用的环境进行声明,一个简单的例子如下:
0x3 结语
tamper的编写远不止这些,本文只就其最基本的结构进行探讨。作为sqlmap的扩展,在编写tamper时几乎所有的sqlmap内置的函数、变量都可以使用,本文不一一列出。
0x04 一些常用的取值
0x01 tamper脚本
当我们下载了【sqlmap】的安装包,解压后到文件夹【sqlmap】,在以下路径,我们可以找到文件夹【tamper】,其中该文件夹有44个脚本分别对44种WAF进行检测。例如360,绿盟WAF,modsecurity.,百度,fortiweb,cloudflare。由此可见老外对国内的WAF也是有了解的,可见他们也会悄悄对国内的WAF进行绕过。
0x02 分析tamper脚本
由于【tamper】文件夹中有众多的tamper脚本,限于篇幅,无法一一分析,故选取其中一个脚本【lowercase.py】作为样本分析
到这里,我们可以看出,该脚本实现了将攻击载荷中大写字母转成了小写字母
0x03 编写一个tamper脚本
在这里,我们尝试写一个绕过安全狗的tamper脚本,毕竟安全狗在服务器安全领域还是挺不错的,竟然还是免费的,在linux和windows上有各种版本,并且一直维护更新中。
0x04 参考资料
http://sqlmap.org/
https://github.com/sqlmapproject/sqlmap/
https://github.com/sqlmapproject/sqlmap/wiki
https://github.com/sqlmapproject/sqlmap/wiki/FAQ
https://github.com/sqlmapproject/sqlmap/wiki/Third-party-libraries