危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2307 浏览21469886

“Can't open shared library‘udf.dll’”的一种解决方法

对于“Can't open shared library 'udf.dllf”这条错误提示,相信使用过MySQL提权的朋友应该都不会感到陌生吧,明明是foot用户,但在使用udfdll提权创建自定义函数时却提示了这样的错误,以前我遇到这种情况时,就会抱怨自己运气不好,只好放弃利用MySQL提权的方法了,但对于为什么会出现这样的错误提示以及如何解决却从没有多想过。

我的虚拟机中的两个操作系统都安装了PHP环境,一个可以利用udf.dll提权,一个在使用udf.dll提权时就会提示“Can't open shared liforary 'udf.dll"’。能利用udf.dll提权的系统中是使用AppServ搭建的PHP环境,不能利用udf.dll提权的系统中是手动安装的Apache+PHP+MySQL+phpMyAdmin搭建的PHP环境,为什么虚拟机中的两个系统一个能利用udf.dll提权另一个却不能,我很纳闷,但没有找出答案。

后来在tools论坛上看到gongju朋友发了一个帖子,在帖子中给出了“Can't open shared library 'udf.dll'”错误提示的一个解释并提供了一个解决方法。他说从MySQL5.1版本开始必须要把udf.dll文件放到MySQL安装目录下的lib/plugin文件夹下才能创建自定义函数,并且该目录默认是没有的,而MySQL into dumpfile在导出文件时也不能创建文件夹。原来是MySQL从5.1版本开始在把udf.dll导出到系统目录下已经不能创建自定义函数了,而一般我都是把udf.dll导出到系统目录,自然也就不能创建自定义函数了,没有自定义函数就不能执行相应的功能,导致了不能提权。能够提权的系统中的MySQL的版本为5.0.37.不能提权的系统中的MySQL的版本为5.1,正好符台上面的说法。

“必须要把udf.dll文件放到MySQL安装目录下的lib/plugin文件夹下才能创建自定义函数”,这听起来好像是限制,但也是一种提示,如果我们自己在MySQL的安装目录下创建lib/plugin目录,然后再把udf.dll导出到该目录是不是就可以解决这个问题来提权昵?我们来实际的测试一下,先假设我的webshell有权限在MySQL的安装目录下新建目录,我在原来不能使用udf.dll提权的系统中上传了提权用的udf.php,并且以root用户成功登录。

首先把udf.dll导出到系统目录(我这里为C:\\WINDOWS\\System32\\),执行“Create Function MyCmdreturns string soname 'udf.dll';”命令时出现了“Can't openshared library 'udf.dll’”的错误提示,说明导出到系统目录不能创建自定义函数,我们来把udf.dll导出到MySQL安装目录下的lib/plugin目录中,我已经知道了MySQL的安装目录为“C:\Program Files\MySQL\MySQL Server 5.1\”,在这个目录下目前还没有lib/plugin这个目录,我们来创建它。通过webshell在“C:\Program Files\MySQL\MySQL Server5.1\”下新建文件夹lib,然后在“C:\Program FiIes\MySQL\MySQL Server 5.1\lib\”目录下新建文件夹plugin,在udfphp中DLL导出路径就写“C:\Program Files\MySQL\MySQLServer 5.l\lib\plugin\udf.dll"。

点击“导出安装”按钮后提示安装成功,这说明可以使用类似“Select MyCmd("net user");”的SQL命令来执行cmd命令了。

在SQL命令的输入框中输入“Select MyCmd(”net user”);”,点击“执行命令”按钮,成功的执行了命令“net user”。再来执行一条命令“SelectMyCmd(”whoami");”,也执行成功了,显示权限为system权限。

通过在MySQL安装目录下创建lib/plugin目录,然后再把udf.dil导出到该目录下,是在MySQL 5.1以及更高版本中解决“Can't open shared Iibrary 'udf.dll。”错误的一种方法,如果大家也遇到了同样的问题,有MySQL的root用户的密码却提不了权,不妨试试这个解决的方法,说不定就会柳暗花明又一村了。随着时间的推移,越来越多的服务器都将安装5.l以上版本的MySQL,相信这种提权方法会用的越来越多。

相关推荐