前置知识
secure_file_priv
这个变量被用于限制导入和导出的数据目录,比如 LOAD DATA
和 SELECT ... INTO OUTFILE
语句,以及 LOAD_FILE()
函数。这些操作限制了哪些用户拥有文件操作权限。
secure_file_priv
有些设置选项:
- 如果为空,不做目录限制,即任何目录均可以。
- 如果指定了目录,MySQL 会限制只能从该目录导入、或导出到该目录。目录必须已存在,MySQL 不会自动创建该目录。
- 如果设置为
NULL
,MySQL 服务器禁止导入与导出功能。
该变量的默认值,是由编译时的 CMake
选项而定,具体可参考官方文档。
因为secure_file_priv
是只读变量 不能通过 SET GLOBAL variable_name = value;
命令设置;只能通过修改配置文件;
修改 my.cnf
文件,在 [mysqld]
块下,如果没有 secure_file_priv
则新增
指定目录:secure_file_priv=/path/to/data
不限目录:secure_file_priv=
禁止操作:secure_file_priv=NULL
常用命令
1 | #创建一个用户 |
常用函数
1 | #返回字符串 s 的第一个字符的 ASCII 码 |
配置文件
1 | #文件路径 |
Mysql GET Shell
SSH连接
很多人因为要记得密码太多,所以会重复使用同一个密码,因此我们可以用爆破出来的数据库密码尝试去连接 ssh服务
1 | #查询用户名为'zixyd'的数据库密码 |
日志写shell
MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 Getshell
1 | #查看日志功能是否开启以及日志文件路径 |
UDF
自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在 SQL 语句中调用,就像调用本机函数 version () 等方便。
如果可以自定义一个类似于system的函数,就可以执行shell命令;
如果是 MySQL >= 5.1 的版本,必须把 UDF 动态链接库文件放置于 MySQL 安装目录下的 lib\plugin
文件夹下,才能创建自定义函数
1 | #查看plugin的路径,一般都是/usr/lib/mysql/plugin/ |
outfile/dumpfile函数
1 | #写木马文件 |
参考:
https://www.sqlsec.com/2020/11/mysql.html#文章总结