ctf serialize 序列化和反序列化

weixin_33807284發表於2018-11-11

反序列化


12310716-8a2ddf70dd3b7d4d.png
圖片.png

和往常一樣,先進入網址。


12310716-2e0f9681d6743d4b.png

這裡我們可以看到上面的原始碼。
unserialize($str) === "$KEY"

我們舉個例子

$arr=array();
 $arr['name']='張三';
 $arr['age']='22'; 
$arr['sex']='男'; 
$arr['phone']='123456789'; 
$arr['address']='上海市浦東新區'; var_dump($arr); 
//輸出: 
// array(5) {
 // ["name"]=> string(6) "張三" 
// ["age"]=> string(2) "22"
 // ["sex"]=> string(3) "男" 
// ["phone"]=> string(9) "123456789" 
// ["address"]=> string(21) "上海市浦東新區" // } 
//序列化: 
$info=serialize($arr); var_dump($info);
 //輸出:
 //string(140) "a:5:{s:4:"name";s:6:"張三";s:3:"age";s:2:"22";s:3:"sex";s:3:"男";s:5:"phone";s:9:"123456789";s:7:"address";s:21:"上海市浦東新區";}" 
////////////////////////說明///////////////////////////////// 
//**a:5標誌序列化為array包含5個鍵值對,s:4標誌內容為字串包含4個字元。**// 

$zhangsan=unserialize($info); 
var_dump($zhangsan);
 //輸出:
 // array(5) { 
// ["name"]=> string(6) "張三"
 // ["age"]=> string(2) "22"
 // ["sex"]=> string(3) "男" 
// ["phone"]=> string(9) "123456789" 
// ["address"]=> string(21) "上海市浦東新區" // }

這裡是反序列化
也即是說把$key反序列化一下我們會得到

s:7:D0g3!!!

我這裡有個好玩的東西http://demo.php.cn/可以線上測評php

12310716-a7c35990f148147c.png
圖片.png

因為是 $_GET的方式
所以我們在位址列用get的輸入格式就行了
http://120.79.33.253:9001/?str=s:7:"D0g3!!!"
這個就是我們需要的地址

黑體字就是我們需要的flag

12310716-2c51afa13864dcd3.png
圖片.png

相關文章