进入题目,查看网页源码

111

发现可疑网址,点击进入

222

找到题目代码,是反序列化题目

核心代码为:

1
2
3
4
5
public function __destruct(){
$a = $this->a;
$b = $this->b;
echo $b($a);
}

可以构造变量a—>phpinfo(),变量b—>assert;组合起来后—>assert(phpinfo()),使代码执行phpinfo()

assert()函数的功能:

在 PHP 8 以前的版本(如 5.x),assert() 的参数可以是字符串,并会像 eval() 一样被执行

构造出序列化字符串

O:8:”HelloPhp”:2:{s:1:”a”;s:9:”phpinfo()”;s:1:”b”;s:6:”assert”;}

get传输使网页执行phpinfo()

传输之前要把source参数去掉,否则会优先执行highlight_file(FILE);的结果而覆盖phpinfo()的执行结果
666

ctrl+f搜索flag查找到flag

777