PHP反序列化---字符串逃逸

填坑填坑 上次讲了插进去 这次讲怼出去
看题!!! 不知道哪个比赛的题目


include ('flag.php');
error_reporting(0);
function filter($payload){
     
    $key = array('php','flag','boyfriend');
    $filter = '/'.implode('|',$key).'/i';
    return preg_replace($filter,'hack!!!!',$payload);
}

$payload=$_GET['payload'];
$GDUT['A&D']='666';
$GDUT['Hed9eh0g']='no_girlfriend';

if(isset($payload)) {
     
    if (strpos($payload, 'php')===false  && strpos($payload, 'flag')===false && strpos($payload, 'boyfriend')===false) {
     
        echo 'fuck_no_key!!!';
    }else{
     
        $GDUT['A&D']=$payload;
        $GDUT=unserialize(filter(serialize($GDUT)));
        if ($GDUT['Hed9eh0g'] === 'has_girlfriend') {
     
            echo $flag;
        } else {
     
            echo 'fuck_no_girlfriend!!!';
        }
    }
}else{
     
    highlight_file(__FILE__);
}

思路:

  • 填充16个字符变成24个 一次多八个
  • 理想序列化后的数据

a:2:{s:3:“A&D”;s:3:“666”;s:8:“Hed9eh0g”;s:14:“has_girlfriend”;}

  • 所以我们要填充”;s:8:“Hed9eh0g”;s:14:“has_girlfriend”;}
    这么多字符数据 一共四十个字符
  • 所以构造五次phpflagboyfriend逃逸出去
    PHP反序列化---字符串逃逸_第1张图片
    看这道题,浓浓的恋爱酸臭味,看来是情人节快到了,md
    祝各位师傅早日脱单,别忘了给弟弟来一个

重点!!!


弟弟今年没那么多,别找太大的,谢谢师傅们。富婆无视以上条件!!!

你可能感兴趣的:(CTF)