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