天命:php的序列化题目简直是玄学,既不能本地复现,也不能求证靶场环境
天命:本地php是复现不了反序列化漏洞的,都不知道是版本问题还是其他问题
天命:这题也是有点奇怪的,明明用字符串2也应该是可以,但偏偏就不行,神奇了
进来题目先看到php代码审计,是反序列化漏洞
先看进来入口的逻辑,判断是不是正常的ascii码字符,然后反序列化,可以忽略校验,都是正常的
// 校验你是不是ascii码里面的合法字符
function is_valid($s) {
for($i = 0; $i < strlen($s); $i++)
if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
return false;
return true;
}
// 接受变量然后校验,进行反序列化激活类
if(isset($_GET{'str'})) {
$str = (string)$_GET['str'];
if(is_valid($str)) {
$obj = unserialize($str); // 反序列化
}
}
接下来看一下生命周期函数和四大函数
看了一下只有读文件函数是有用的,那就要 $op=2 或者$op='2' 才行
// 属性保护:只能被自己或子类访问,也是影响下面是*的原因