簡單的反序列化—第一彈
阿新 • • 發佈:2022-02-23
serialize()函式是將序列化後的物件或陣列進行反序列化,unserialize() 函式是將反序列化返回其序列化。
反序列化標準形態
看一下這道題的程式碼
<?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