一、确定目标
sqlmap -u "URL"
通过URL进行确定,GET方式时:此处为带参数的URL
-m URL文件
可以创建URL文件批量进行扫描
sqlmap -r 文件
结合Burpsuite抓包进行
首先设置代理访问网站,然后找到具体页面的请求包,将请求包选中右击创建文件
示例:
将上图创建好的文件放置桌面,起名为post
sqlmap 通过-r参数选中
对于POST请求的,也可通过-u "URL" --cookie "访问网站时的cookie信息"
--forms
如果是post方法提交的表单,由于没有参数可以通过此参数来告诉sqlmap对表单进行检测
--param-del 符号
当URL存在多个参数时,且参数间的分隔符不是默认的&,此时通过此参数指定分隔符号来告知sqlmap对注入参数的识别。如:http://www.sdsdsd.com/sss.php?id=1;sid=2;uid=3 此时就可以通过–param-del “;” 来指定
二、关于数据库的参数
--privileges
查看数据库管理系统用户的权限
--is-dba
查看当前数据库用户和是否是管理员权限
-p 参数名
当URL中参数过多,可以指定参数进行测试
--data "参数=值"
通过POST发送数据参数
--dbms=数据库类型
指定数据库类型,当已知目标的数据库类型最好指定,此时测试的语句只会测试指定数据库类型
–-batch
当需要手工输入Y/N来进行下一步操作时,加入此参数表示使用默认方式
--dbs
对于已经存在注入的网站进行数据库查询
--current-db
查看当前使用的数据库
--users
查看数据库所有的使用者
--current-user
查看当前数据库使用者
--passwords
爆出所有使用者数据库密码
--tables
数据表查询(默认查询所有数据库的数据表),参数:指定某个数据库-D "数据库名"
也可以添加--count
用来查看每个表都有多少行的数据
--columns
数据列(字段)查询,参数:指定数据表和数据库-T "数据表名" -D "数据库名"
--dump
字段内容,参数:-C "字段1,字段2,......" -T "表名" -D "数据库名"
;若内容过多可以指定导出其中的几行--start 起始行 --stop 最后一行
如果需要将全部字段都显示出来可以使用--dump-all
暴力破解数据库表名列名
--common-tables
--common-columns
当数据库为Access和MySQL5.0版本以下时,由于没有元数据库提供查询所以需要进行暴力破解
三、绕过或检测WAF、IDS、IPS及优化
--identify-waf
检测目标网站是否存在WAF
-–random-agent
随机产生HTTP User-Agent头值
--skip-waf
跳过WAF/IPS / IDS启发式检测保护
--mobile
设定一个手机的User-Agent来模仿手机登陆
--smart
只对能够快速判断为注入的报错点进行注入,当使用-m对多个站点进行注入时可以采取此方法
--offline
在离线模式下工作(仅使用会话数据)
--proxy "http://URL:端口"
设置代理
–proxy-cred=代理认证凭证(name:password)
设置代理
--host "内容"
修改http请求头中host的选项
--refer
修改http请求中的refer选项
--level 等级
测试的等级(1-5)默认为1
level2时添加对cookie的注入
level3时添加对http user-agent和referer的注入
--risk 等级
风险等级为1-4,默认为1会测试大部分语句
2 增加基于事件测试语句
3 增加or语句
--threads=THREADS
当前http(s)最大请求数 (默认 1)
--safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。
--safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。
有的web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求,这样在sqlmap进行探测或者注入的时候可能造成错误请求而触发这个策略,导致以后无法进行。
关于时间的参数
--delay=秒数
可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。
--timeout
http请求当发送之后多少秒未回应会被标记为超时,默认为30秒,可以修改为10即为10秒未回应标记超时
--retries
超时重连的尝试次数,默认为3
--time-sec
延时注入时设置延时的时间默认为5秒
四、操作系统及数据库
--os-shell
获取服务器的权限,执行系统命令。前提:1、网站数据库为SQL Server、MySQL;2、当前用户必须具有数据库管理员权限;3、获取网站的路径
--sql-shell
相当于进入虚拟终端来执行sql语句只能进行查询、load_file(),无法插入
五、其他
-v 等级
等级为0-6,默认为1
0 只显示python错误及严重的信息
1 同时显示基本信息和警告
2 同时显示debug信息
3 同时显示注入的payload
4 同时显示http请求
5 同时显示http响应头
6 同时显示http响应页面
-g google语法(如:inurl:.php?id)
从谷歌中加载结果目标URL(只获取前100个结果,需要挂代理)
--flush-session
清除缓存
--search -C/D/T "搜索内容"
搜索在字段/数据库/数据表名中包含搜索内容的信息
1为模糊匹配,2为全匹配
最终显示搜索到字段中包含pass的这个dvwa数据库中的users表
六、脚本
–tamper unmagicquotes.py 宽字节注入脚本