<?php

/*
--- HelloCTF - 反序列化靶场 关卡 3 : 对象中值的权限 --- 

HINT:尝试将flag传递出来~

# -*- coding: utf-8 -*-
# @Author: 探姬
# @Date:   2024-07-01 20:30
# @Repo:   github.com/ProbiusOfficial/PHPSerialize-labs
# @email:  admin@hello-ctf.com
# @link:   hello-ctf.com

*/

class FLAG{
    public 
$public_flag "HelloCTF{?";
    protected 
$protected_flag "?";
    private 
$private_flag "?}";

    function 
get_protected_flag(){
        return 
$this->protected_flag;
    }

    function 
get_private_flag(){
        return 
$this->private_flag;
    }
}

class 
SubFLAG extends FLAG{
    function 
show_protected_flag(){
        return 
$this->protected_flag;
    }

    function 
show_private_flag(){
        return 
$this->private_flag;
    }
}

$target = new FLAG();
$sub_target = new SubFLAG();


$code $_POST['code'];

if(isset(
$code)){
    eval(
$code);
} else {
    
highlight_file(__FILE__);
    echo 
"Trying to get FLAG...<br>";
    echo 
"Public Flag: ".$target->public_flag."<br>";
    echo 
"Protected Flag:".$target->protected_flag ."<br>";
    echo 
"Private Flag:".$target->private_flag ."<br>";
}

?>
Trying to get FLAG...
Public Flag: HelloCTF{se3_me_
Protected Flag: Error: Cannot access protected property FLAG:: in ?
Private Flag: Error: Cannot access private property FLAG:: in ?
...Wait,where is the flag?