mysql读写文件
mysql读写文件文章目录mysql读写文件secure_file_priv参数load_file()secure_file_priv为空secure_file_priv为NULLsecure_file_priv为某一目录load data infilesecure_file_priv为空secure_file_priv为NULLsecure_file_priv为某一目录绕过限制,加上locals
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
进行使用
写文件
注意:
- 此方法只能在本地读取,远程连接mysql时无法使用
- 无法越权读取
mysql写shell的方法
直接写文件
select "cmd" into outfile "E:/Desktop/3.txt";
select "cmd" into dumpfile "E:/Desktop/3.txt";
注意:
- 不能写入已经存在的文件中
- 有
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转换的字符
参考文章
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)