首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql sys_exec无法打开共享库'lib_mysqludf_sys.so‘(错误号: 11,错误的ELF类: ELFCLASS32)

MySQL的sys_exec函数是一个用户定义函数(UDF),它允许在MySQL中执行系统命令。lib_mysqludf_sys.so是这个函数的共享库文件。错误号11通常表示“无法分配内存”,而错误ELFCLASS32表示库文件是为32位系统编译的,而你的MySQL服务器可能是64位的。

基础概念

  • 用户定义函数(UDF):允许在SQL语句中执行自定义的C/C++函数。
  • 共享库(.so文件):在Unix-like系统中,动态链接库文件,可以被多个程序共享。
  • ELF(Executable and Linkable Format):Unix系统中的可执行文件、目标代码、共享库的标准格式。

相关优势

  • 灵活性:UDF提供了在数据库层面执行复杂操作的能力。
  • 性能:对于某些操作,直接在数据库中执行可能比通过应用程序层更高效。

类型与应用场景

  • 类型:系统命令执行、字符串处理、数学计算等。
  • 应用场景:自动化数据库维护任务、数据导入导出、执行外部脚本等。

问题原因

  • 位数不匹配lib_mysqludf_sys.so是为32位系统编译的,而你的MySQL服务器是64位的。
  • 权限问题:可能是因为MySQL用户没有权限访问或加载该共享库。
  • 路径问题:共享库文件不在MySQL的库搜索路径中。

解决方法

  1. 检查MySQL位数: 确认你的MySQL服务器是32位还是64位。
  2. 检查MySQL位数: 确认你的MySQL服务器是32位还是64位。
  3. 重新编译共享库: 如果你的MySQL是64位的,你需要获取或自己编译一个64位的lib_mysqludf_sys.so
  4. 重新编译共享库: 如果你的MySQL是64位的,你需要获取或自己编译一个64位的lib_mysqludf_sys.so
  5. 设置库路径: 将共享库文件放在MySQL能够找到的目录中,通常是/usr/lib64/mysql/usr/lib/mysql,并确保权限正确。
  6. 设置库路径: 将共享库文件放在MySQL能够找到的目录中,通常是/usr/lib64/mysql/usr/lib/mysql,并确保权限正确。
  7. 加载共享库: 在MySQL中加载共享库。
  8. 加载共享库: 在MySQL中加载共享库。
  9. 检查权限: 确保MySQL用户有权访问共享库文件。
  10. 检查权限: 确保MySQL用户有权访问共享库文件。

示例代码

以下是一个简单的C语言示例,用于创建一个基本的UDF:

代码语言:txt
复制
#include <mysql.h>

extern "C" char *sys_exec(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error) {
    // 实现函数逻辑
    return result;
}

编译命令:

代码语言:txt
复制
gcc -shared -o lib_mysqludf_sys.so -fPIC mysqludf_sys.c -I/usr/include/mysql

通过以上步骤,你应该能够解决lib_mysqludf_sys.so无法打开的问题。如果问题依旧存在,可能需要进一步检查系统日志或MySQL错误日志以获取更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL 基础学习参考资料分享

信安之路的小白成长阶段目前处于 SQL 的基础学习阶段,在每一个学习阶段都会分享一些参考资料给大家,即使大家未能成为学习的主力,但是也希望更多想要参与学习的同学跟着这个学习计划一直前行,详细情况请看公众号菜单中间一栏的成长计划...mysqli_connect.php 使用 mysql 的常用命令 连接数据库: mysql -h -P -u -p 列出数据库: show.../usr/lib/lib_mysqludf_sys.so 是否存在: whereis lib_mysqludf_sys.so 2、如果存在: mysql -u root -p ... mysql> select...sys_exec(''); sys_exec 执行完返回退出状态 sys_eval 返回标准输出 3、增加用户到管理员组: mysql> select sys_exec('usermod -a -G.../lib_mysqludf_sys.so SQL 注入手册 下面是关于下文中数据库对应的字母表: ?

1.1K20

Archlinux安装scrcpy加载共享库出错 error while loading shared libraries:libusb-1.0.so.0:wrong ELF class:ELFCLA

Archlinux安装scrcpy加载共享库出错 在安装scrcpy时通过sudo pacman -S scrcpy顺利安装,但是运行报错 scrcpy: error while loading shared...libraries: libusb-1.0.so.0: wrong ELF class: ELFCLASS32 这是在64位系统上运行32位库出错,我发现了这个10年的issue https://github.com.../Rouji/Ergodone-Setup/issues/1 也就是说我们只需要运行sudo pacman -S libusb-compat 但是运行之后出现了新的问题 libusb-compat:...文件系统中已存在 /usr/lib/libusb-0.1.so.4.4.4 libusb-compat: 文件系统中已存在 /usr/lib/libusb-0.1.so.4.4.4 一般来说已经有的库就不要动它了...,运行sudo pacman -Syu 没有解决,会报同样的错误,说明libusb这个文件不是包管理器提供的,那就删掉现有的库然后让pacman帮我们安装 sudo rm -f /usr/lib/libusb

21210
  • MySQl提权 mof、udf过程详解

    ' into dumpfile 'C:\\MySQL\\lib\\plugin::$INDEX_ALLOCATION' 3、常用的sql基础查询命令 查看数据库路径 select @@datadir...用户通过自定义函数可以实现在Mysql中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用利用MYSQL的自定义函数功能将Mysql账号转换为system权限。...但是如果我现在就打开 MySQL 命令行,使用 select sys_eval(‘whoami’);的话,系统会返回 sys_eval() 函数未定义。...类似于面向对象编程时引入包一样,如果没有引入包,那么这个包里的类你是用不了的。 所以,我们应该把 udf.dll 中的自定义函数引入进来。...5.5.53 这里我们已经通过上传一句话木马拿到网站的shell了,并且得到了网站数据库的用户名和密码都是root。

    65110

    ucore-lab5

    为此需要构造出第一个用户进程,并通过系统调用sys_fork/sys_exec/sys_exit/sys_wait来支持运行不同的应用程序,完成对用户进程的执行过程的基本管理。...fork这些调用的都是sys内相应的函数,sys_fork这些又调用的syscall,syscall又调用的诸如do_fork一类。...复制原进程的内存管理信息到新进程(但内核线程不必做此事) 复制原进程上下文到新进程 将新进程添加到进程列表 唤醒新进程 返回新进程号 do_exit以及do_wait直接引用博客园 wait的实现...在ucore中wait对应的函数是do_wait。 遍历进程链表proc_list,根据输入参数寻找指定pid或任意pid的子进程,如果没找到,直接返回错误信息。...在ucore操作系统中,当一个用户父进程创建自己的子进程时,父进程会把其申请的用户空间设置为只读,子进程可共享父进程占用的用户内存空间中的页面(这就是一个共享的资源)。

    71120

    某大学渗透测试实战靶场报告-Part2

    注:这里用的是sqlmap的lib_mysqludf_sys.dll,如果sys_eval执行命令返回为Null或sys_exec返回为0时不用管它,其实是已经执行成功了的,也可以选择用MSF的mysql_udf_payload...注:192.168.3.2、192.168.3.16这两台机器上的MySQL都设置了secure_file_priv值为Null或指定目录,而且也没有开启Web服务,所以暂时无法通过general_log...这个EXP是Python写的,而且需要impacket库,所以我们必须先在本地安装好Python和impacket,然后将它们和EXP一起打包好并上传到192.168.3.43这台机器上。 ?...2、开启一个匿名共享(才能找到可访问的命名管道)。 1) 新建一个共享并给予Guest或Everyone共享权限。...(默认Everyone) 2) 高级共享设置->密码包含的共享->关闭密码包含共享。

    1K20

    【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中创建 Python 程序 | 导入 ELFFile 库 | 解析 ELF 文件 )

    文章目录 一、PyCharm 中创建 Python 程序 二、导入 ELFFile 依赖库 三、 解析 ELF 文件 四、 博客源码 一、PyCharm 中创建 Python 程序 ---- 在 PyCharm...二、导入 ELFFile 依赖库 ---- 参考 【错误记录】Python 安装依赖库报错 ( ERROR: Could not find a version that satisfies the requirement...elftools ) 博客中导入依赖库过程 ; 三、 解析 ELF 文件 ---- 工程结构 : 将要解析的 libwtcrypto.so 动态库拷贝到工程根目录 , 执行 main.py 即可完成解析...; 完整代码示例 : # coding=utf-8 # 解析 elf 文件需要导入的依赖库 # 安装 pyelftools 库 from elftools.elf.elffile import...ELFFile def main(): # 要解析的动态库路径 elf_path = r'libwtcrypto.so' # 打开 elf 文件 file = open

    98420

    【权限提升】六种数据库提权&口令获取

    等) 1、UDF 配合MSF命令绑定 提权 UDF(Userdeined function)用户自定义函数,是mysql的一个接口,可以为mysql增添一些函数并且使用 提权条件 已经获得当前数据库最高权限用户账号和密码...secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限) 上传UDF动态链接库文件 动态链接库是实现共享函数库的一种方式...(前提是该目录存在,需手工创建),该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。...绑定需要访问数据库的IP。 将127.0.0.1修改为需要访问此数据库的IP地址。 设置访问密码。在 Redis.conf中requirepass 字段后,设置添加访问密码。...其9.3到10版本中存在一个逻辑错误,导致超级用户在不知情的情况下触发普通用户创建的恶意代码,导致执行一些不可预期的操作。

    13810

    第48章 MDK的编译过程及文件类型全解(1)

    关于ELF文件格式,参考配套资料里的《ELF文件格式》文件。 在本章中讲解了非常多的文件类型,学习时请跟着教程的节奏,打开实际工程中的文件来了解。...图 4821 使用记事本打开uvprojx、uvoptx及uvguix文件可看到XML格式的记录 这些工程参数都是当MDK正常退出时才会被写入保存,所以若MDK错误退出时(如使用Windows的任务管理器强制关闭...根据这几个文件的记录类型,可以知道uvprojx文件是最重要的,删掉它我们就无法再正常打开工程了,而uvoptx及uvguix文件并不是必须的,可以删除,重新使用MDK打开uvprojx工程文件后,会以默认参数重新创建...(3)    共享目标文件(Shared Object File), 它的定义比较难理解,我们直接举例,MDK生成的*.lib文件就属于共享目标文件,它可以继续参与链接,加入到可执行文件之中。...另外,Linux的.so,如/lib/ glibc-2.5.so,Windows的DLL都属于这一类。

    1.6K10

    Ubuntu 13.04CentOS 6.4 下C++开发时的相关设置

    Ubuntu 13.04/CentOS 6.4 下C++开发时的相关设置 一、基本设置 首先,为了可以使我们的c++ 可以找到 iostream类,std标准库,我们需要在...库文档在连接(静态库和共享库)和运行(仅限于使用共享库的程式)时被使用,其搜索路径是在系统中进行配置的。...需要注意的是:第二种搜索路径的配置方式对于程式连接时的库(包括共享库和静态库)的定位已足够了,但是对于使用了共享库的程式的执行还是不够的。...这是因为为了加快程式执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文档/etc/ld.so.cache从中进行搜索的。...而且xxx中不能含有“.”之类的符号 新建了一个项目后,Ctrl+F11可以运行,但只要 ,然后再Ctrl+F11运行,出现"launch failed.Binary not found"错误

    68430

    吴章金: 如何创建一个*可执行*的共享库

    先来看看两类文件的区别 当前 Linux 下面的二进制程序标准格式是 ELF,这类格式可以用来表示 4 种不同类型的文件: 可重定位目标文件(.o),用于静态链接 可执行文件格式,用于运行时创建进程映像...共享目标文件(.so,共享库),协同可执行文件创建进程映像 Core dump(core),运行过程中崩溃时自动生成,用于调试 我们来看中间两类: 可执行文件 如果不引用外部库函数,那么所有符号地址是确定的...让共享库可执行 下面来探讨另外一种方式,在生成共享库的基础上,来研究怎么让它可以执行。...先来回顾一下共享库,在本文第 2 节直接执行的时候马上出段错误,基本原因是共享库没有强制提供一个标准的 C 程序入口。...\n"); } 当普通共享库使用,默认编译即可,要能够执行的话,实现一下 entry(),编译时打开 EXEC_SHARED 即可: $ gcc -m32 -shared -fpic -o libhello.so

    1.1K20

    Linux 程序编译过程详解

    大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。...在windows中静态库是以 .lib 为后缀的文件,共享库是以 .dll 为后缀的文件。在linux中静态库是以.a为后缀的文件,共享库是以.so为后缀的文件。...在Linux系统中,可以用ldd命令查看一个可执行程序依赖的共享库。如果一个系统中存在多个需要同时运行的程序且这些程序之间存在共享库,那么采用动态库的形式将更节省内存。...ldd:可以用于查看一个可执行程序依赖的共享库。objcopy:将一种对象文件翻译成另一种格式,譬如将.bin转换成.elf、或者将.elf转换成.bin等。objdump:主要的作用是反汇编。...由于ELF文件无法被当做普通文本文件打开,如果希望直接查看一个ELF文件包含的指令和数据,需要使用反汇编的方法。

    1.9K30

    Linux 程序编译过程的来龙去脉

    大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。...在windows中静态库是以 .lib 为后缀的文件,共享库是以 .dll 为后缀的文件。在linux中静态库是以.a为后缀的文件,共享库是以.so为后缀的文件。...在Linux系统中,可以用ldd命令查看一个可执行程序依赖的共享库。 如果一个系统中存在多个需要同时运行的程序且这些程序之间存在共享库,那么采用动态库的形式将更节省内存。...ldd:可以用于查看一个可执行程序依赖的共享库。 objcopy:将一种对象文件翻译成另一种格式,譬如将.bin转换成.elf、或者将.elf转换成.bin等。 objdump:主要的作用是反汇编。...由于ELF文件无法被当做普通文本文件打开,如果希望直接查看一个ELF文件包含的指令和数据,需要使用反汇编的方法。

    3K30

    程序运行的时候替换程序文件会影响进程吗?

    动态链接器加载主程序依赖的共享库的时候,调用函数mmap()为共享库的代码段和数据段创建私有的文件映射。 内核为每个文件创建一个页缓存。...进程读代码段或者数据段中的某一页的时候,直接把文件的页缓存中的物理页映射到进程的虚拟地址空间,当进程修改这一页的时候,就会生成页错误异常,页错误异常处理程序为文件的页缓存中的物理页生成一个副本,然后把虚拟页映射到这个副本...第1种替换方法:打开旧的程序文件,使用函数ftruncate()把文件截断到长度为0,然后把新的程序文件复制过来。...glibc库的函数unlink()调用系统调用unlink(),系统调用unlink()的处理过程如下。...如果进程一直打开这个文件,直到设备断电,就会造成存储设备上文件的索引节点和数据块泄漏。

    68610

    Android so文件浅析「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 一. 简述 Android中的so文件是动态链接库,是二进制文件,即ELF文件。多用于NDK开发中。 二....基础知识 三. so文件格式解析 so文件即ELF文件,是一个二进制文件,我们可以用UltraEdit打开查看。...常见的错误: a. 加载so文件的时候无权限 首先你要看下so文件的绝对路径的权限是什么?外卡路径是没有权限的。...注意: A.javah 命令的使用【附录1】 a.首先要确保本地的java环境变量配置ok,不然无法用javah命令 b.首先先进入到写的java的目录下,比如说: C:\Users\XXX...c.最为关键的是.h文件的生成, 这里经常出现的错误为:错误: 找不到 ‘r.demo.com.ndkdemo.JNIDemo’ 的类文件。

    5.3K11
    领券