<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Oracle數據庫注入基礎入門

      Oracle數據庫注入基礎入門

      前排摘要:此隨筆的案例取材大部分來自PortSwigger靶場
      閱讀時間:大約10分鐘


      學習原因

      最近幾天在研究BurpSuite官方的TOP10靶場,發現里面不僅僅包含了MySQL數據庫的注入,還包含了其它數據庫的SQL注入。對于MySQL數據庫而言,相關的文章和教程可謂“百花齊放”。但Oracle數據庫的注入,并且講的相對于TOP10入門的新手而言,卻寥寥無幾。本篇作為個人學習隨筆,并不具備學術專業性,僅作為自己記載的前提下,能幫助更多的新人學習Oracle數據庫注入

      資源共享

      靶場地址:https://portswigger.net/web-security/all-labs
      Burpsuite靶場SQL注入篇記載:http://www.rzrgm.cn/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'--+
      

      如果你能看到這,你就可以做一些基礎的Oracle數據庫注入的實驗了。

      posted @ 2025-09-26 20:00  紛飛的花火丶  閱讀(206)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品亚洲无人区一区二区| 亚洲av不卡电影在线网址最新| 无码人妻av免费一区二区三区| 中文字幕国产精品第一页| 日日碰狠狠躁久久躁96avv| 欧美嫩交一区二区三区| 又大又粗又爽18禁免费看| 狠狠综合久久av一区二| 国产精品美女一区二区三| 国产在线永久视频| 免费无码av片在线观看网站| 玩弄放荡人妻少妇系列| 国产精品午夜剧场免费观看| 国产成人AV一区二区三区无码| 人妻中文字幕精品一页| 日本激情久久精品人妻热| 无遮无挡爽爽免费视频| 麻豆亚洲精品一区二区| 精品少妇无码一区二区三批| 亚洲最大有声小说AV网| 久久人人97超碰人人澡爱香蕉| 亚洲男人综合久久综合天堂| 暖暖影院日本高清...免费| 亚洲国产成人av毛片大全| 崇阳县| 免费看黄片一区二区三区| 女人张开腿无遮无挡视频| 国产午夜A理论毛片| 亚洲av与日韩av在线| 国产欧美综合在线观看第十页| 国产免费毛卡片| 疯狂添女人下部视频免费| 又爽又大又黄a级毛片在线视频| 日夜啪啪一区二区三区| 久久精品国产成人午夜福利| 亚洲AV无码不卡在线播放| 日韩无套无码精品| 开心五月婷婷综合网站| 午夜福利国产片在线视频| 免费三级网站| 亚洲人精品午夜射精日韩|