mysql读写文件

secure_file_priv参数

secure_file_priv为NULL,表示禁止限制操作
secure_file_priv为某一目录,表示只能操作该目录下的文件
secure_file_priv为空,表示不对读写文件进行限制

在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL

show global variables like "secure%";

在这里插入图片描述

load_file()

可以直接查看

select load_file("E:/Desktop/2.txt");

在这里插入图片描述
也可以写进数据库中,然后看数据库中的内容

secure_file_priv为空

本机用的是php_study,所以修改my.ini中的配置,在[mysqld]条目下添加

secure_file_priv=

然后再查看,secure_file_priv修改为空
在这里插入图片描述
将文件写入数据库

insert into user(name) values (load_file('E:\\Desktop\\2.txt'));

在这里插入图片描述

secure_file_priv为NULL

如果secure_file_priv的值为NULL,那么就不能将文件写进数据库中
在这里插入图片描述

secure_file_priv为某一目录

secure_file_priv为特定目录

在这里插入图片描述

只能操作特定目录的文件,其余不能
在这里插入图片描述

load data infile

secure_file_priv为空

secure_file_priv值为空,load data infile 可以正常执行

load data infile 'E:\\Desktop\\2.txt' into table user;

在这里插入图片描述

secure_file_priv为NULL

但是如果我们将secure_file_priv的值改为NULL(也就是配置文件中没有secure_file_priv的信息)
在这里插入图片描述

secure_file_priv为某一目录

还是该目录下的文件可以操作,但是其他目录下的文件不能操作

绕过限制,加上local

使用local需要开启local_infile,改变量默认为ON
在这里插入图片描述

如果需要修改

set global local_infile = true;

或者修改配置文件,在[mysqld]下添加条目local_infile = 1

绕过

load data local infile 'D:\\1.txt' into table user;

运行结果
在这里插入图片描述

system echo/cat

在版本为5.x时,可以直接使用system cat 进行使用

写文件
在这里插入图片描述

注意:

  1. 此方法只能在本地读取,远程连接mysql时无法使用
  2. 无法越权读取

mysql写shell的方法

直接写文件

select "cmd" into outfile "E:/Desktop/3.txt";
select "cmd" into dumpfile "E:/Desktop/3.txt";

注意:

  1. 不能写入已经存在的文件中
  2. secure_file_priv的限制

结果
在这里插入图片描述

secure_file_priv存在限制的时候,不能使用
在这里插入图片描述

日志注入

首先要开启log日志,查看日志是否开启

show variables like "%general%";

在这里插入图片描述

开启日志,设置日志文件路径

 set global general_log = ON;
 set global general_log_file = "D:/2.txt";

查看日志,木马已经写进去了
在这里插入图片描述
整完之后,把日志关掉,路径改回原来的值

dumpfile和outfile的区别

大佬的解释

outfile函数可以导出多行数据,而dumpfile只能导出一行数据。
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式。

导出数据到文件的时候,可以指定一些参数
FIELDS ESCAPED BY 可以用来对指定的字符进行转义,
FIELDS [OPTIONALLY] ENCLOSED BY 用来对字段值进行包裹,
FIELDS TERMINATED BY 用来对字段值之间进行分割

注意:outfile后面不能接0x开头或者char转换以后的路径,load_file后面的路径既可以是单引号,也可以是0x、char转换的字符

参考文章

  1. Mysql 命令 load data infile 权限问题
  2. mysql文件读写
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐