注入神器 --SQLMAP使用示例
说明
以下对SQLMAP的操作说明皆在靶机环境下进行演示学习,请勿进行非法行为操作!
输出结果详细程度
-v
控制sqlmap结果输出的详细程度,7个级别,默认为1
- 0,仅显示回溯,错误和严重信息
- 1,显示警告信息
- 2,显示调试信息
- 3,显示注入的有效载荷
- 4,显示HTTP请求
- 5,显示HTTP响应的标头
- 6,显示HTTP响应的页面内容
多种注入方式
单目标地址注入
-u / --url
针对单个目标地址使用,一般结合其它参数使用
多目标地址注入
-m
批量注入文本文件中列出的URL目标列表,sqlmap逐个扫描每个URL
注入文本文件
-r
从文本文件中加载注入的目标,优点:可跳过Cookie认证
保存要注入的页面操作请求于文本文件中
Burp代理日志注入
-l(小写L)
指定一个Burp代理日志文件,从日志文件中解析出可能攻击的目标
设置日志文件名proxy.log保存,当浏览站点时便会保存日志文件
使用正则过滤代理日志中的目标
- -scope
使用正则对代理日志进行过滤,只注入所需主机
连接请求选项
HTTP方法
- -method
sqlmap是自动检测HTTP请求中使用的正确方法,但是一些不常用的方法需要使用该参数指定
POST注入
- -data
sqlmap默认执行HTTP请求的方法是GET,当要测试POST注入的参数时需要使用该参数,一般和-r参数共用
保存当前POST请求于文本文件中
指定分隔符
- -param-del
主要用于多个参数注入时指定分隔符,能够使sqlmap更加精准的测试目的参数
Cookie登录验证
- -cookie
该选项在如下两个情况下使用
- 该注入点需要登录才能访问
- 想要检测和利用此类标头的SQL注入(- -level设置为2或者更高,sqlmap自动测试HTTP标头)
目标网站需要cookie验证,且未设置情况下显示如下:
在未设置HTTPOnly站点下浏览器输入以下代码,获取当前cookie(方法多种)
HTTP协议认证
- -auth-type 和 - -auth-cred
用于指定使用哪个HTTP协议身份验证后端Web服务器,用于执行对目标应用程序所有的有效凭据。
支持的三种HTTP协议身份验证机制:
- Basic
- Digest
- NTLM
HTTP私钥认证
- -auth-file
适用于Web服务器需要客户端证书用于身份验证的私钥
伪造User-Agent头
- -user-agent 和 - -random-agent
一些站点防火墙会对HTTP的User-Agent标头进行检查,从而检测攻击加入到到IPS的黑名单中
Tips:- -level设置为3或更高,sqlmap会对HTTP标头进行测试
方法一:随机替换
查看到请求包中的User-Agent自动替换了:
方法二:指定替换
指定HOST头
- -host
host标头自动从目标解析
指定Referer头
- referer
默认情况下请求包中无Regerer标头,可伪造此标头
忽略HTTP错误代码
- -ignore-code
适用于测试偶尔返回HTTP错误代码(导致常规sqlmap运行引起问题)的站点(如401:未经授权),而想忽略该提示继续测试,则使用该参数
HTTP(s)代理
- -proxy、- -proxy-cred、- -proxy-file 和 - -ignore-proxy
- - -proxy-file:适用于侵入的IP地址被封时自动跳到代理池的下一个地址,从而持续扫描注入
- - -ignore-proxy:忽略本地代理设置
Tor匿名网络
- -tor、- -tor-port、- -tor-type 和 - -check-tor
适用于出于某种原因保持匿名扫描注入
HTTP请求之间的延迟
- -delay
适用于欺骗防火墙正常访问(无延迟访问容易被墙),可以指定在每个HTTP(s)请求之间保留的秒数。有效值为浮点型(例如0.5s),默认情况下不设置延迟。
第一个请求时间:
第二个请求时间,相隔3秒,如规避IDS发现:
超时连接前等待的秒数
- -timeout
在考虑HTTP(s)请求超时前可以指定等待的秒数,有效值为浮点型(例如:10.5s),默认30秒。
HTTP连接时最大重试数
- -retries
HTTP(s)连接超时时,可以指定最大重试次数。(默认3次)
随机更改给定参数值
- -randomize
在每个请求期间随机更改值的参数名称。长度和类型将根据提供的原始值保留。
避免过多请求失败会话失联
- -safe-url、- -safe-post、- -safe-req 和 - -safe-freq
sqlmap检测时会产生大量的请求,有时服务器检测到的客户端请求过多从而对其屏蔽,为了持续成功请求可使用:
- - -safe-url:测试期间持续性访问URL地址;
- - -safe-post:POST数据发送到给定的安全的URL地址;(安全的URL指能返回请求的数据)
- - -safe-req:从文件加载并使用安全的HTTP请求;
- - -safe-freq:每次测试请求后都会访问以下安全的URL。
关闭URL编码
- -skip-urlencode
关闭URL编码,对数据进行源数据传输(sqlmap默认对URL进行URL编码)
绕过CSRF保护
\ - -csrf-token 和 - -csrf-url
很多站点通过在表单中添加值随机生成的token的隐藏字段来防止csrf攻击,sqlmap会自动识别并绕过,但有时会失效,就需要手动添加:
- - -csrf-token:用于指定包含token的隐藏字段名,如sqlmap不能自动识别需要手动指定。
- - -csrf-url:从任意中回收值(如有漏洞的目标URL中没有包含token值而要求在其它地方提取该参数即无敌)
强制使用HTTPS
- -force-ssl
使目标强制使用SSL/HTTPS请求
在每次请求前执行特定python代码
- -eval
每次执行前执行自定义的python代码
每次返送请求前,sqlmap都会根据id值重新计算hash值并更新GET请求中的hash值