sqlmap 工具使用总结
sqlmap是一款简单好用的自动化测试sql注入类漏洞的工具,本片将讲解笔者在学习过程中总结的该工具的安装使用方法。
安装sqlmap
安装sqlmap前需要安装python换将,需要注意的是,部分版本的sqlmap不支持python 3版本,因此需要安装python 2.X 才能运行,如果已经安装了python 3,为了避免冲突,在重新安装python 2.X 后,可以进入到python 2安装目录,并将python.exe 和pythonw.exe 两个文件重新命名如下图所示,之后想要以python 2来运行某个脚本时,仅需以‘python2 xxx’的格式即可。
前往官网并下载压缩包(sqlmap下载地址)后解压到本地,之后进入到本地文件夹并在命令行中打开,输入’python2 sqlmap.py -h’,可以看到安装成功,能够正常使用sqlmap工具。
sqlmap常用参数
这一节列出了笔者当前接触过的一些sqlmap参数,这些参数较常使用,之后遇到的有用的参数也会逐渐补充进来。
测试目标 | 说明 |
---|---|
-u | 后接需要注入的url链接 |
-r | 后接使用burp导出的请求包,一般为txt文件 |
--second-url | 后接二阶注入时,返回输出的页面 |
--cookie | 对于需要登陆才能访问的页面,需加入cookie参数 |
测试范围 | 说明 |
---|---|
--level=1 | 设置测试的等级,默认为1 |
--level=2 | 测试中加入对cookie的注入 |
--level=3 | 测试中加入对user-agent的注入 |
--level=4 | 测试中加入对refere的注入 |
--level=5 | 测试中加入对host的注入 |
指定组件 | 说明 |
---|---|
--dbms= | 后接使用的数据类型及版本 |
--os= | 后接使用的操作系统 |
输出参数 | 说明 |
---|---|
-a, --all | 输出目标系统数据库所有参数 |
--is-dba | 判断当前是否拥有管理员权限 |
--current-user | 输出当前数据库用户 |
--current-db | 输出当前数据库 |
--users | 输出所有用户 |
--dbs | 输出所有数据库 |
-D xxx --tables | 输出指定数据库中的表 |
-D xxx -T xxx --columns | 输出指定表中的列及数据类型 |
--count | 返回查询数据的个数 |
--dump | 列举数据并保存到本地文件,同时会给出文件路径 |
sqlmap使用注意事项
使用sqlmap工具前需要判断注入页面提交参数使用的方法,若为get方法,即在url链接中直接包含有参数名及数值等便可直接使用’-u’参数后接该链接即可,当然,如果被测试的页面需要认证登录才可访问,则需要利用burp抓包找到对应的cookie,并将cookie参数加入测试命令中才能够正常开始测试。例如:python2 sqlmap.py -u “xxxxx” –cookie “xxxx” –current-user。
若被测试的链接提交参数的方法为post,即链接中不包含有任何参数,则有两种方法进行注入。其一是在url后面加上参数的键值对,即形如’sqlmap -u “192.168.216.147/checklogin.php” --data “myusername=admin&mypassword=admin&Submit=Login” –dbs’。其二是通过burp抓包,并将其导出为txt格式的文本,随后在sqlmap中利用’-r’参数对该文本进行注入测试。带出文件的方法如下图所示:
同时,有时候会出现页面可被注入的参数过多导致注入未成功的现象,这个时候可以利用在参数后面加上’*’,来指引sqlmap针对性的测试该参数,加大注入成功的可能性。