注入神器 --SQLMAP使用示例

说明

  以下对SQLMAP的操作说明皆在靶机环境下进行演示学习,请勿进行非法行为操作!

输出结果详细程度

-v

控制sqlmap结果输出的详细程度,7个级别,默认为1

  • 0,仅显示回溯,错误和严重信息
  • 1,显示警告信息
  • 2,显示调试信息
  • 3,显示注入的有效载荷
  • 4,显示HTTP请求
  • 5,显示HTTP响应的标头
  • 6,显示HTTP响应的页面内容

注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

多种注入方式

单目标地址注入

-u / --url

针对单个目标地址使用,一般结合其它参数使用

注入神器 --SQLMAP使用示例

多目标地址注入

-m

批量注入文本文件中列出的URL目标列表,sqlmap逐个扫描每个URL

注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

注入文本文件

-r

从文本文件中加载注入的目标,优点:可跳过Cookie认证

保存要注入的页面操作请求于文本文件中
注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

Burp代理日志注入

-l(小写L)

指定一个Burp代理日志文件,从日志文件中解析出可能攻击的目标

设置日志文件名proxy.log保存,当浏览站点时便会保存日志文件
注入神器 --SQLMAP使用示例

使用正则过滤代理日志中的目标

- -scope

使用正则对代理日志进行过滤,只注入所需主机

注入神器 --SQLMAP使用示例

连接请求选项

HTTP方法

- -method

sqlmap是自动检测HTTP请求中使用的正确方法,但是一些不常用的方法需要使用该参数指定

注入神器 --SQLMAP使用示例

POST注入

- -data

sqlmap默认执行HTTP请求的方法是GET,当要测试POST注入的参数时需要使用该参数,一般和-r参数共用

保存当前POST请求于文本文件中
注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

指定分隔符

- -param-del

主要用于多个参数注入时指定分隔符,能够使sqlmap更加精准的测试目的参数

注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

Cookie登录验证

- -cookie

该选项在如下两个情况下使用

  • 该注入点需要登录才能访问
  • 想要检测和利用此类标头的SQL注入(- -level设置为2或者更高,sqlmap自动测试HTTP标头)

目标网站需要cookie验证,且未设置情况下显示如下:
注入神器 --SQLMAP使用示例
在未设置HTTPOnly站点下浏览器输入以下代码,获取当前cookie(方法多种)
注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

HTTP协议认证

- -auth-type- -auth-cred

用于指定使用哪个HTTP协议身份验证后端Web服务器,用于执行对目标应用程序所有的有效凭据。
支持的三种HTTP协议身份验证机制:

  • Basic
  • Digest
  • NTLM

注入神器 --SQLMAP使用示例

HTTP私钥认证

- -auth-file

适用于Web服务器需要客户端证书用于身份验证的私钥

伪造User-Agent头

- -user-agent- -random-agent

一些站点防火墙会对HTTP的User-Agent标头进行检查,从而检测攻击加入到到IPS的黑名单中
Tips:- -level设置为3或更高,sqlmap会对HTTP标头进行测试

方法一:随机替换

注入神器 --SQLMAP使用示例
查看到请求包中的User-Agent自动替换了:
注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

方法二:指定替换

注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

指定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),默认情况下不设置延迟。

注入神器 --SQLMAP使用示例
第一个请求时间:
注入神器 --SQLMAP使用示例
第二个请求时间,相隔3秒,如规避IDS发现:
注入神器 --SQLMAP使用示例

超时连接前等待的秒数

- -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请求

注入神器 --SQLMAP使用示例
注入神器 --SQLMAP使用示例

在每次请求前执行特定python代码

- -eval

每次执行前执行自定义的python代码

每次返送请求前,sqlmap都会根据id值重新计算hash值并更新GET请求中的hash值
注入神器 --SQLMAP使用示例