您当前的位置: 首页 > 

Snakin_ya

暂无认证

  • 1浏览

    0关注

    107博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[DASCTF 2022]三月赛 web 复现

Snakin_ya 发布时间:2022-03-29 19:37:09 ,浏览量:1

ezpop
 v1($this->v2);
    }

    public function __invoke()
    {
        $this->v1->world();
    }
}

class fin
{
    public $f1;

    public function __destruct()
    {
        echo $this->f1 . '114514';
    }

    public function run()
    {
        ($this->f1)();
    }

    public function __call($a, $b)
    {
        echo $this->f1->get_flag();
    }

}

class what
{
    public $a;

    public function __toString()
    {
        $this->a->run();
        return 'hello';
    }
}
class mix
{
    public $m1;

    public function run()
    {
        ($this->m1)();
    }

    public function get_flag()
    {
        eval('#' . $this->m1);
    }

}

if (isset($_POST['cmd'])) {
    unserialize($_POST['cmd']);
} else {
    highlight_file(__FILE__);
}

前置:

__call(),在对象中调用一个不可访问方法时调用
__toString,类被当成字符串使用
__invoke(),调用函数的方式调用一个对象时的回应方法

审计代码,简单构造一下链子:

fin::__destruct
↓↓↓
what::__toString
↓↓↓
mix::run
↓↓↓
crow::__invoke
↓↓↓
fin::__call
↓↓↓
mix::get_flag

POC:

            
关注
打赏
1650510800
查看更多评论
0.0540s