辉克's Blog

创造机会的人是勇者;等待机会的人是愚者

mysql提权提示(Can’t open shared library ‘udf.dll’)

对于cant open shared library udf.dll相信很多使用mysql提权的朋友应该都不会感到陌生吧,明明是root用户 但是在使用udf.dll提权创建自定义函数时却提示这样的错误,以前遇到这种情况一般都会放弃。
经过测试发现appserv搭建php环境能利用udf.dll提权 5.037

apache+php+mysql+phpmyadmin搭建的php环境不能利用 5.1

为什么两个系统一个能利用一个不能利用呢?原因很简单 因为 5.1版本开始必须把udf.dll文件放到mysql安装目录下的lib/blugin文件下才能创建自定义函数,并且该目录默认是没有的,而mysql into dumpfile在导出文件时也不能创建文件夹,原来mysql从5.1版本开始在把udf.dll导入到系统目录下已经不能创建自定义函数了,而一般我们都是把udf.dll导入到系统目录,自然也就不能创建自定义函数了,导致了不能提权。能够提权的系统中的mysql版本为5.0.37,不能提权的系统中的mysql的版本为5.1正好符合上面说法。

在不能利用的系统(5.037)中执行create function mycmd return string soname udf.dll 时提示cant open shared library udf.dll 的错误提示,说明导出到系统目录不能创建自定义函数,我们来把udf.dll导入到mysql安装目录下的lib/blugin目录中,我已经知道了mysql的安装目录为:”c:program filesmysqlmysql server 5.1″在这个目录下目前还没有lin/plugin这个目录,我们通过webshell在mysql安装目录下创建lib文件夹然后再lib文件夹中创建plugin文件夹 在udf.php中dll导出路径就写”c:program filesmysqlmysql server 5.1libpluginudf.dll”。这时候就可以执行 如select mycmd(“net user”);的sql命令来执行聪明的了。。。

通过在mysql安装目录下创建lib/plugin目录,然后再把udf.dll文件导出到该目录下,是在mysql 5.1以及更高版本中解决”cant open shared library udf.dll”错误的一种办法。。。。

发表回复