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 小时前
Redis过期策略
数据库·redis·缓存
2401_824697661 小时前
如何实现SQL存储过程状态监控_编写实时运行监控仪表盘
jvm·数据库·python
Mike117.1 小时前
GBase 8c MOT 内存表落地前要先画清楚边界
服务器·数据库
iAm_Ike1 小时前
c++怎么在写入文件流时通过peek预读功能实现复杂的逻辑判断【实战】
jvm·数据库·python
未若君雅裁1 小时前
MySQL慢SQL排查实战-从定位到EXPLAIN优化闭环
sql·mysql
dFObBIMmai1 小时前
mysql如何确保主从数据完全同步_开启半同步复制机制
jvm·数据库·python
2501_930707781 小时前
使用C#代码压平 PDF 表单字段
数据库·pdf·c#
m0_470857642 小时前
CSS如何实现Bootstrap进度条自定义动画_利用keyframe关键帧
jvm·数据库·python
treesforest2 小时前
IP数据库下载完全指南:免费与商业IP定位库对比
网络·数据库·php