mysql使用into outfile 導出文件報錯:secure-file-priv問題

在練習 sql-labs 的第七關的時候,教程上是使用 into outfile 直接寫 webshell 進去,教程地址如下:

https://www.cnblogs.com/lcamry/p/5763105.html

我在實際練習的時候,執行了導出文件的 sql 語句,但發現 webshell並沒有寫入到指定目錄下。

http://192.168.111.130/sql/Less-7?id=1')) and 1=2 union select 1,2,0x3c3f70687020706870696e666f28293f3e into outfile "D:/phpStudy/PHPTutorial/WWW/sql/Less-7/t.php"%23

於是在虛擬機上執行了一下導出文件的命令,排查一下是php的原因還是mysql本身的原因。

select 111 into outfile "d:/112.txt";

發現 mysql 報錯:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
on so it cannot execute this statement

查了一下資料,可能是mysql沒有權限寫;或者是指定的目錄不在mysql規定的目錄內。

查看mysql規定的目錄:

show variables like "%secure-file-priv%";

發現 secure-file-priv 這個變量值爲空,也就是任何目錄都不可以。

解決辦法,在mysql根目錄下的 my.ini 配置文件中,指定 secure-file-priv 變量的值。

如果指定爲一個目錄,則只能將文件導出在該目錄下。如果想所有目錄都可以導出,將 secure-file-priv = '' 即可。

secure-file-priv = ''

 

保存文件並重啓mysql進程即可。

再執行一次之前的 sql注入操作,發現文件已經被寫入到web目錄下了。

並且可以訪問,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章