Sqlmap在sqli-lab上的一些使用

本文详细介绍了SQL注入工具SQLMap的使用方法,包括GET、POST请求的注入,Header注入,指定注入位置,盲注,多线程设置,预测输出,持久连接,数据库探测,脚本绕过,无效值替换,自定义载荷位置,tamper脚本,注入技术选择,权限枚举,URL爬取等核心功能。通过实例展示了SQLMap在渗透测试中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.get使用方法:
2.post使用方法:
3.header注入使用方法:
4.指定注入的位置:
5.盲注使用不接收http body:
6.设置多线程(可以设置的最大数量为10,默认为1):
7.预测输出:
8.持久连接:
9.指定数据库的探测
10.sqlmap脚本绕过(详细的脚本解释)
11.强制设置无效值替换:
12.自定义载荷(payload)位置
13.sqlmay设置tamper脚本:
14.sqlmap设置具体的注入技术:
15.查看当前用户以及是否是dba用户
16.枚举dbms的权限
17.爬取url:


1.get使用方法:

1.查看是否有注入点:sqlmap -u 网址
在这里插入图片描述

2.爆出数据库名:sqlmap -u 网址 --dbs
在这里插入图片描述
3.爆出数据库的表名:sqlmap -u 网址 -D security --tables
在这里插入图片描述

4.爆出数据库的列名:sqlmap -u 网址 -D security -T users --columns
在这里插入图片描述

5.dump出数据:sqlmap -u -D security -T users -C id,password,username --dump
在这里插入图片描述

2.post使用方法:

1.使用burp抓包,将请求内容保存在txt文件中(或者使用-u 网址 --data ‘data’来代替)
在这里插入图片描述

2.使用sqlmap检查是否存在注入点:sqlmap -r 文档位置
在这里插入图片描述
3.使用sqlmap爆库名:sqlmap -r 文档位置 --dbs
在这里插入图片描述
其余步骤与get方式一样

3.header注入使用方法:

当我们使用–level 3时就会检查UA,referer是否存在注入,而level 2则会检测cookie
1.查看是否存在注入点:sqlmap -r 文档位置 --dbms=security --level3
在这里插入图片描述
2.查看数据库:sqlmap -r 文档位置 --dbs
在这里插入图片描述
其他的与get也是一样的

4.指定注入的位置:

在我们要指定注入的位置后面加上即可,例如:
在这里插入图片描述
然后sqlmap运行的时候就会探测到我们的
号:
在这里插入图片描述
可以看到,这里就只探测了cookie:
在这里插入图片描述

5.盲注使用不接收http body:

sqlmap -u 网址 --null-connection,这样sqlmap会以head的方式发送探测请求
在这里插入图片描述

6.设置多线程(可以设置的最大数量为10,默认为1):

在我们之前的参数后面加上 --threads 10就可以了,但是在时间盲注中使用多线程是不安全的,所以尽量不要在时间盲注使用多线程:
在这里插入图片描述
使用10个线程:
开始时间:
在这里插入图片描述
结束时间:
在这里插入图片描述
花了大概5分钟

使用默认线程数量:
开始时间:
在这里插入图片描述
结束时间:
在这里插入图片描述
还没有跑完,可以看到速度的差距有多大了

7.预测输出:

–predict-output
该方法可以提升性能,但不与–threads兼容
使用预测输出:
开始时间:
在这里插入图片描述
结束时间:
在这里插入图片描述
可以看到跟默认的爆破到同样的地方时间少了两分钟,说明还是有效果的,但是没有–threads 10快

8.持久连接:

–keep-alive
该方法也可以提升性能
使用持久连接:
开始时间:
在这里插入图片描述
结束时间:
在这里插入图片描述
感觉跟默认的差距不大。。。。

9.指定数据库的探测

–dbms 数据库名
这样可以节约时间

10.sqlmap脚本绕过

以sqli-labs-less36为例:
不使用脚本:
在这里插入图片描述
可以看到无法检测出注入点

使用脚本:(unmagicquotes.py,用%df%27代替单引号,用–代替空格)

在这里插入图片描述
可以看到检测出注入点了

11.强制设置无效值替换:

有时候我们需要使原始的参数无效时,sqlmap默认使用负数来替换原始值,而这里我们还可以使用:

–invalid-bignum 用大数字替换原始值(id=1999999999)

–invalid-logical 用布尔运算替换原始值(id=1 and 1=2)

–invalid-string 用随机字符串替换原始值(id=asdsa)

12.自定义载荷(payload)位置

一般是不会用到的,让sqlmap自己去插入就行了
如果使用这个的话需要加上前缀和后缀:

–prefix="’)" --suffix=" and ('1"

而我们插入的payload就会在这中间:

13.sqlmay设置tamper脚本:

–tamper"脚本,各个脚本之间空格隔开"

14.sqlmap设置具体的注入技术:

–technique:
B:布尔盲注
E:报错
U:联合
S:堆叠
T:时间
Q:内联查询

默认使用以上的全部技术,感觉sqlmap一般查不出来堆叠注入,可能是我还没有设置好(使用sqli-lbas-less39验证)

15.查看当前用户以及是否是dba用户

–current-user 查看用户

–is-dba 查看是否是dba

–hostname 查看主机名
在这里插入图片描述

–password暴力破解用户名密码
在这里插入图片描述

16.枚举dbms的权限

–privileges --role
在这里插入图片描述

17.爬取url:

–crawl=num(1,2,3,4:要爬取的深度)
在这里插入图片描述


版权声明:本文为优快云博主「Mccc_li」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/xmd213131/article/details/105919380

### 安装 Sqlmap 为了能够顺利运行并测试 SQL 注入漏洞,首先需要确保已正确安装 `sqlmap` 工具。以下是针对不同操作系统环境下的安装指导: 对于基于 Debian 或 Ubuntu 的 Linux 发行版,可以通过 APT 包管理器来安装最新版本的 sqlmap: ```bash sudo apt-get update && sudo apt-get install -y git python3-pip git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev cd sqlmap-dev/ pip3 install . ``` 对于 macOS 用户,则推荐通过 Homebrew 来获取最新的稳定版本: ```bash brew tap owtf/pwn brew install sqlmap ``` Windows 用户可以考虑使用 Windows Subsystem for Linux (WSL),按照上述 Linux 方法进行安装。 ### 使用 Sqlmap 测试 Sqli-lab 实验室中的 Web 应用程序安全性 完成软件安装之后,就可以着手准备与 sqli-labs 进行交互了。这里介绍一种常见的方式——利用 Burp Suite 抓取 HTTP 请求数据包,并将其保存成文本文件供后续分析工具调用。 #### 准备工作 启动目标虚拟机上的 Apache 和 PHP 环境服务,访问浏览器输入相应 URL 地址加载页面;与此同时开启中间件代理监听端口以便捕获完整的会话流量记录[^3]。 #### 执行检测命令 一旦获得了有效的 GET/POST 请求样本,便能借助 `-r` 参数指定本地存储路径让 sqlmap 自动解析其中的关键信息字段尝试探测潜在风险点位[^1]: ```bash sqlmap -r /path/to/request.txt ``` 如果想要进一步探索数据库结构详情,比如枚举所有可用表单名称列表,只需附加额外选项即可实现自动化操作流程简化处理逻辑[^2]: ```bash python sqlmap.py -u "http://target-url/?param=value" --dbms=mysql --technique=B -o -D target_database --tables --batch ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值