一、获取数据库的账号密码
(一)拿到webshell之后,查看配置文件;
(2)通过sql注入拿到webshell;
手工注入可参考我的第一篇文章
用sqlmap也可以
(3)暴力破解
二、UDF提权
UDF提权条件:
1.Mysql 版本大于 5.1 版本 (基本都是,小于的话可利用漏洞更多了)2. 网站本身存在 Getshell 漏洞,可以通过 Webshell 可以将 udf.dll 上传到 Mysql 中的 lib\plugin 目录下3. 掌握的 Mysql 数据库账号有对 Mysql 的 insert 和 delete 权限以创建和删除函数4.secure-file-priv 参数不为 null (在本实验中非必须条件)
(一)连接数据库

点开新建查询,这里可以执行sql语句命令,点击运行即可;
(二)
因为我想调用dll函数使用creat function 这个语句,从而获取数据库对应的管理员权限。
而这个数据库本身没有这个动态链接库,所以我需要写出来并且放到\lib\plugin目录里面去;
所以要做的有两步:
1.准备好dll动态链接库;
2.把dll放进应该的位置;
我先做第二步吧,先找到"冰箱";
先查查信息
这里显示我是root用户,这里的root是数据库的,而不是操作系统的;
找到plugin的绝对路径位置了;
(二)大象进冰箱(至关重要的思路):
接下来制作dll;
(1)什么是dll?
DLL
(动态链接库,Dynamic Link Library)是微软 Windows 操作系统中用于存储可执行代码和数据的文件格式。它允许不同的程序共享相同的代码和资源,以便更加高效地使用内存和其他计算机资源。DLL的基本概念
- 动态链接:与静态链接不同,动态链接指的是程序在运行时而不是编译时与库文件进行链接。动态链接库(DLL)是在程序运行时加载并被程序调用的,因此它提供了灵活性和模块化的能力。
- 库文件:DLL 文件中通常包含函数、类、资源、数据等代码组件。这些代码可以被多个程序共享,不需要每个程序都包含自己的副本。
一个dll文件可以被多个应用程序利用;
不好理解的话,就可以理解成配置文件,不一样的就是配置文件里包含了自定义的函数;
(2)为什么要制作dll?
MYSQL支持UDF,UDF是他的一个扩展接口,通过这个拓展接口,我可以向MYSQL数据库里面去添加我自定义的函数,而现在我们知道了,在DLL文件里面可以包含自定义函数。
说白了,我白说了,就是自定义函数写好在dll文件里面,再把dll文件投递在目标系统(的数据库)里面;
(3)怎么制作dll?
用SQLMAP
为什么用sqlmap,因为他有适配的dll文件(因为sqlmap可以getshell,说明其中有可以执行命令的函数,所以可以直接用sqlmap实现命令执行)
开始找
问我位数,不知道就查一下了;
点进去,是他了;
但是这个是dll_就是编码过的,解码工具也在sqlmap里,找到之后我都放同一个文件夹
cmd,执行python cloak.py -d -i lib_mysqludf_sys.dll_解码了;
放进去,没有\lib\plugin目录就自行创建;名字别打错
(三)创建sys_eval函数,提权
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
(四)提权成功
这里要注意,因为我虚拟机win7里,Mysql是切换管理员打开的,所以才提权成功,这是对应了实际工作中,web由普通用户搭建,数据库由管理员用户创建;如果小伙伴发现执行了select sys_eval('whoami');还是普通用户,是因为你的虚拟机数据库和网页都是普通用户搭建的,所以提权之后最贵就到这了;