[强网杯 2019]Upload 反序列化结合文件上传

本文揭示了一种通过PHP Profile类的魔术方法__call和__get绕过验证,实现文件上传并植入一句话木马的攻击手法。重点在于如何利用Cookie传递序列化数据,并在Profile类中巧妙设计except数组进行控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[强网杯 2019]Upload
www.tar.gz发现源码,文件还有点大,是把整个工程文件都上传了。
用phpstrom打开的话会有断点提示,一处是在Register.php,另一处是在Index.php,是在提示我们用cookie传序列化字符串。
在这里插入图片描述
在这里插入图片描述
重点在Profile.php,毕竟文件上传都是在这里控制的,看到两个魔术方法__call和__get。调用本类中没有的方法触发__call,调用this->{$name},如果本类中也没有这个属性,调用__get。
在这里插入图片描述
再倒回去看index.php中Register类的__destruct方法,如果我们把checker赋成Profile类,就会因为Profile没有index()方法然后触发__call。Profile里也没有属性index接着触发__get,最后触发except,except是个数组,只需要给except[index]赋值就可以了。
在这里插入图片描述
那么except[index]要被赋成什么函数呢?注意到我们还有文件上传没有用到:把ext赋成1进入文件复制,先上传一个带木马的图片文件,它会被md5重命名,filename_tmp赋值成这个文件,filename可以是一个php文件,这样我们就能用一句话木马连接这个php文件了。

public function upload_img(){
   
        if($this->checker){
   
            if(!$this->checker->login_check()){
   
                $curr_url="http://".$_SERVER['HTTP_HOST'].$_SERVER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值