mysql load_file()

本地mysql注入读取配置文件 遇到的问题 简单记录一下。

本地测试时,读取文件发现无论怎样都返回为NULL。

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

原因是mysql的secure_file_priv的新特性。

mysql新版本下 secure_file_priv字段:secure_file_priv参数是用来限制LOAD DATA,SELECT ...OUTFILE, and LOAD_FILE()传到哪个指定目录的。

ure_file_priv的值为null,表示限制mysqld不允许导入/导出

当secure_file_priv的值为/tmp/,表示限制mysqld的导入|导出只能发生在/tmp/目录下

当secure_file_priv的值没有具体值时,表示不对mysqld的导入|导出做限制。

资料地址: https://segmentfault.com/a/1190000009333563

解决办法:

>> 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  (盲注)

猜你喜欢

转载自www.cnblogs.com/s1ye/p/8909452.html