简单的反序列化—第一弹

反序列化标准形态

看一下这道题的代码

<?php
include "flag.php";
$unserialize_str = $_POST['data']; 
$data_unserialize = unserialize($unserialize_str); 
if($data_unserialize['user'] == 'admin' && $data_unserialize['pass']=='nicaicaikan') 
{     
     print_r($flag); 
}
else{
    highlight_file(__FILE__);
}

 

  

 

首先我们要了解unserialize() 函数的作用

  unserialize() 函数用于将通过serialize()函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。

  这样理解:serialize()函数是将序列化后的对象或数组进行反序列化,unserialize() 函数是将反序列化返回其序列化。

 

这就说明post获取的data要是反序列化之后的数据,通过unserialize()进行返回原始的对象结构,再进行对比,如果满足条件的话就可以得到flag。

//条件 data=array("user"=>"admin","pass"=>"nicaicaikan")

<?php
$arr=array("user"=>"admin","pass"=>"nicaicaikan");
echo serialize($arr);
?>

//得到 a:2:{s:4:"user";s:5:"admin";s:4:"pass";s:11:"nicaicaikan";}

 

  

 

得到flag

posted @ 2022-02-23 22:04  mt0u  阅读(775)  评论(0编辑  收藏  举报