攻防世界unserialize3

1.观察题目

image-20260124112306458

这是一道典型的 PHP 反序列化绕过题目

该类型标志:

__wakeup():反序列化时一定会执行的方法(这道题就有,直接 exit 终止程序,摆明了要你绕过);

__destruct():对象销毁时执行的方法;

__construct():构造函数(辅助特征);

unserialize():PHP 反序列化的核心函数(题目里只要出现这个函数,100% 是反序列化题);

serialize():序列化函数(配套出现);

2.解题

反序列化题的输入几乎都是让你传一串「奇怪的字符串」,格式特征特别明显:

  • 开头是O:(Object,代表对象),比如O:4:"xctf":1:{...}
  • 里面全是数字:字符串的组合,比如s:4:"flag";
  • 整体是O:长度:"类名":属性数:{属性名;属性值}的结构。

结构:O:长度:"类名":属性数:{属性名;属性值}`

image-20260124112846106

在后面加上/?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

O:代表「Object」(对象)

“:”:分隔符,用来分开不同类型的信息

4:代表后面的字符串"xctf"的长度是 4 个字符(x、c、t、f 刚好 4 个)

"xctf":题目表头

“:2”:原本是:1(代表这个类有 1 个属性),我们改成:2来绕过__wakeup ()

{}:开始标记:接下来要写这个类里的属性

s:代表「String」(字符串)

“:4”:代表后面的属性名"flag"的长度是 4 个字符(f、l、a、g 刚好 4 个)

flag:我们要获取的东西

s:3:"111":同样:s= 字符串,3= 值"111"的长度是 3,"111"是随便填的属性值(只要格式对就行)可以更改

3.获取flag

image-20260124113244149

flag:cyberpeace{eac20714816f014ecb4e33c0488ef5d6}

posted @ 2026-01-24 11:34  地方管委主任  阅读(1)  评论(0)    收藏  举报