mysql load_file()

本地mysql注入讀取配置文件 遇到的問題 簡單記錄一下。mysql

本地測試時,讀取文件發現不管怎樣都返回爲NULL。sql

>> select load_file('c:/xx/xx/xx/x.txt');segmentfault

緣由是mysql的secure_file_priv的新特性。測試

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

ure_file_priv的值爲null,表示限制mysqld不容許導入/導出io

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

當secure_file_priv的值沒有具體值時,表示不對mysqld的導入|導出作限制。配置

資料地址: https://segmentfault.com/a/1190000009333563file

解決辦法:select

>> show global variables like '%secure%';

默認的爲NULL。

修改mysql.ini或my.ini文件,在[mysqld]下加入

secure_file_priv =

保存重啓mysql便可。

 

這裏注意一下,路徑中的斜槓是 / 而不是\。

load_file,後面的路徑能夠是單引號,0x,char轉換的字符串。

load_file 能夠在union中做爲一個字段來用。 如:union select 1,load_file('c:/boot.ini'),3,4 from tables等。

load_file 能夠在where字句中使用。如and lenth(load_file(0x*************))>1  (盲注)

相關文章
相關標籤/搜索