news 2026/7/15 1:06:56

Oracle数据库注入基础入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle数据库注入基础入门

学习原因

最近几天在研究BurpSuite官方的TOP10靶场,发现里面不仅仅包含了MySQL数据库的注入,还包含了其它数据库的SQL注入。对于MySQL数据库而言,相关的文章和教程可谓“百花齐放”。但Oracle数据库的注入,并且讲的相对于TOP10入门的新手而言,却寥寥无几。本篇作为个人学习随笔,并不具备学术专业性,仅作为自己记载的前提下,能帮助更多的新人学习Oracle数据库注入

资源共享

靶场地址:https://portswigger.net/web-security/all-labs

Burpsuite靶场SQL注入篇记载:https://www.cnblogs.com/flyingfirework/articles/19103750

一、SQL注入的原理(会MySQL数据库注入的佬,可以跳过)

SQL注入的本质是:将恶意的SQL代码插入到应用程序的输入参数中,欺骗后端数据库执行非预期的SQL命令。

文字可能解释得太笼统,不如来看示例

例一:SQL注入原理示例

假设这里有一个Web应用程序,主要功能是登录。那么可以猜测其后台代码可能是

SELECT * FROM users WHERE username = ? AND password = ?【?处为用户输入的账号密码】

我们都知道,你输入的东西,会被带往后台程序去执行。假如数据库账户里面有:

username=admin;

password=123456;

那么正常登录情况,应该是

SELECT * FROM users WHERE username = 'admin' AND password = '123456'

数据库如果查询到了账户名为admin,密码为123456的账户,条件就会为真,即放行登录请求

那么,如果我们加入一点小小的程序谎言呢?

SELECT * FROM users WHERE username = 'admin' or '1'='1' AND password = '123456'

PS:【admin' or '1'='1】为用户输入的内容

后端其实分不清楚哪些是程序员写的,哪些是用户输入的。站在程序角度思考,你输入的东西可以被当作命令语句执行,那我就当作命令语句执行

分析语句,可知 '1'='1'一定是成立的(恒真),这里采取了or运算,也就是单方面为真则整体为真,那么语句整体为真,就会放行登录请求

这就是SQL注入产生的逻辑

二、Oracle数据库注入与MySQL数据库的区别

其实并没有很大的区别

我们只需要记住Oracle数据库的几个特性与相关联的表即可

在MySQL中,一个SELECT可以不用对应FROM。但在Oracle数据库中,一个SELECT必须对应一个FROM

这句话理解起来其实并不难,还是用例子来解释:

例二:Oracle数据库SELECT函数对应FROM示例

假设我们的注入语句如下(基于MySQL的注入方式)

?category=Gifts' union select 1,2,3--+

这是一个很经典的测试返回位的注入语句,但是这样写,在Oracle数据库中会报错

Oracle数据库有一个单行虚拟表【dual】,当你不打算获取真实数据表的数据时,一般跟FROM dual

?category=Gifts' union select 1,2,3 from dual--+

这是Oracle的特性之一,当然还有第二个特性:

?category=Gifts' union select column_name,NULL from information_schema.columns where table_name='users_vhfyyn'--+

这是一个很经典的MySQL获取字段名的SQL注入语句。其中information_schema表是用于描述数据库中结构信息的表

说人话就是,information_schema数据表存放了数据库名/数据表名/数据列名

但是,Oracle数据库没有information_schema表,那该如何代替进行注入?

只是换了个名字而已,Oracle数据库也有类似的表:

all_tables:列出当前用户可访问的表(自己拥有的 + 被授权访问的表)的信息

all_tab_columns:列出当前用户可访问的表的列信息(自己拥有 + 被授权访问的表)

user_tables:列出当前用户 自己拥有的表 的信息(只显示自己 schema 下的表)

user_tab_columns:列出当前用户 自己拥有的表的列信息。

dba_tables:显示数据库中 所有表 的信息,不论表属于哪个用户

dba_tab_columns:显示数据库中 所有表的列信息,不论属于哪个 schema

做个表格,更方便阅读:

image

那么,如果示例中的数据库是Oracle数据库,则我们应该改成:

?category=Gifts' union select column_name,NULL from all_tab_columns where table_name='USERS_ZLVTEV'--+

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:43:06

无锡黑锋 HF3616 40V热插拔、45V耐压、带故障指示的SOT23-6保护开关技术解析

一、芯片核心定位HF3616 是一款采用 SOT23-6 标准封装 并集成 故障状态指示 功能的 高压前端保护开关IC 其核心价值在于 45V的输入瞬态耐压、40V的热插拔耐受能力、通过外部电阻可编程的过流保护(100mA-2.0A) 以及 开漏输出的FAULT状态引脚 专为智能手机…

作者头像 李华
网站建设 2026/7/14 11:35:32

无锡黑锋 HF3605 35V热插拔、45V耐压、超微型固定限流保护开关技术解析

一、芯片核心定位HF3605 是一款采用 DFN 1x1-4 超微型封装、集成固定阈值保护功能的 高压前端保护开关IC 其核心价值在于 高达45V的输入瞬态耐压、35V的热插拔耐受能力、1.3A的固定过流保护 以及 极致的空间利用率 专为对PCB面积有极致要求的超紧凑便携设备(如超薄手…

作者头像 李华
网站建设 2026/7/12 11:34:07

行业视角下的数据库监控演进:主动预防能力何以成为刚需

凌晨三点的告警电话刺耳地响起,屏幕上一片飘红的性能指标让DBA(数据库管理员)瞬间清醒,又一个不眠之夜在“救火”中开始了——这种场景曾是DBA工作的日常。深夜的“救火”场景,本质是传统被动响应运维模式的真实写照。…

作者头像 李华
网站建设 2026/7/14 21:25:40

​当年靠这个ASP.NET电子书城系统,我的毕业设计直接拿优!(附核心源码)​

谁懂啊!当年做毕业设计时,选了个 “电子书城系统”,没想到不仅完美解决了传统购书的痛点,还靠扎实的技术实现拿了优秀!今天把这份压箱底的开发笔记分享出来,包含技术选型、核心模块实现、踩坑实录,适合.NET 初学者练手,老程序员也能追忆当年的开发情怀~ 一、项目背景…

作者头像 李华
网站建设 2026/7/13 4:10:39

极坐标波束形成数据底跟踪算法详解

极坐标波束形成数据底跟踪算法详解 一、基本概念 1.1 底跟踪的定义 底跟踪(Bottom Tracking)是通过声学回波信号检测和跟踪海底位置的技术,主要用于: 测量船舶相对于海底的速度确定水深辅助水下导航定位补偿多普勒计程仪测量 …

作者头像 李华