mysql几种读取文件方法的使用
mysql数据库在渗透过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(但前提是权限足够)
总结下mysql在不同版本读取文件方法大致有这3个:
1.load_file()
2.load data infile()
3.system cat
load_file()和load data infile读取文件的方法为:新建一个表,读取文件为字符串形式插入表中,然后读出表中数据。
但是通常情况下有两个前提:
1.在拥有file权限的前提下
2.secure_file_priv不为NULL
secure_file_priv的值可以在这样查看
在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。可以通过以下方式修改
windows下:
修改mysql.ini 文件,在[mysqld] 下添加条目: secure_file_priv =
保存,重启mysql。
Linux下:
在/etc/my.cnf的[mysqld]下面添加local-infile=0选项。
1.load_file()
首先我在/tmp目录下创建一个文档
运行mysql
sql命令如下:
1 create table user(cmd text); 2 insert into user(cmd) values (load_file('/tmp/1.txt')); 3 select * from user;
2.load data infile
其实load data infile和load_file()用法上没有什么区别,只是在注入过程中,往往会过滤掉load_file()这个函数,但是仍然有load data infile可以使用。
1 load data infile '/tmp/1.txt' into table user;
3.system cat
在mysql版本为5.x时,除了可以使用上两种方法外,还可以使用系统命令直接读取文件
注意:
1.此方法只能在本地读取,远程连接mysql时无法使用system。
2. 无法越权读取。