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

format string 0 题解

一、题目概况

format string 0picoCTF 2024Binary Exploitation题。公开writeup给出的题面提示是“Can you use your knowledge of format strings to make the customers happy?”,并提供二进制文件、源码和远程连接方式。[1]

二、漏洞直觉

格式化字符串漏洞的典型危险写法是把用户输入直接交给printf当作格式模板。安全写法通常是printf("%s", input),危险写法则是printf(input)。当input中包含%s%x%n等格式符时,程序会把它们解释为指令,而不是普通文本。

格式化字符串漏洞的触发逻辑

三、解题过程

题目第一轮给出三个汉堡选项:Breakf@st_BurgerGr%114d_CheeseBac0n_D3luxe。只看格式化字符串特征,最可疑的是带有%Gr%114d_Cheese。公开writeup显示,输入该选项后程序继续进入下一轮。

Please choose from the following burgers:

Breakf@st_Burger, Gr%114d_Cheese, Bac0n_D3luxe

Enter your recommendation: Gr%114d_Cheese

%114d的含义可以理解为按十进制整数格式输出,并至少占114个字符宽度。如果程序内部刚好把输入当格式模板,输出就会出现被填充后的奇怪结果。

第二轮选项中,Cla%sic_Che%s%steakPe%to_Portobello更值得关注,因为%s会让printf尝试把栈上的某个值当作字符串地址读取。公开writeup记录,输入Cla%sic_Che%s%steak后程序打印出flag

Please choose from the following burgers:

Pe%to_Portobello, $outhwest_Burger, Cla%sic_Che%s%steak

Enter your recommendation: Cla%sic_Che%s%steak

输出中的异常片段并不是噪声,而是漏洞发生的证据:格式符影响了程序对内存和参数的解释方式。最终得到的flag为:

picoCTF{7h3_cu570m3r_15_n3v3r_SEGFAULT_f89c1405}

四、复盘

这道题把格式化字符串漏洞包装成菜单选择题,降低了二进制题的门槛。真正要记住的是:printf家族函数的第一个参数如果来自用户输入,就必须高度警惕。

要点:%d%x常用于观察输出异常,%s可能触发非法地址读取或泄露字符串。

要点:真实程序中应固定格式模板,把用户内容作为后续参数传入。

要点:CTF中遇到菜单选项含%,优先考虑格式化字符串路径。

http://www.gsyq.cn/news/1638622.html

相关文章:

  • AD74413R与PIC18LF4550的硬件协同设计与优化实践
  • SPI扩展IO方案:MC74HC165A与TM4C129ENCPDT实战
  • microLog 后端开发指南
  • IS31FL3731与PIC18F2680的LED矩阵驱动优化实践
  • AMD Ryzen处理器深度调校工具:解锁隐藏性能的完整指南
  • 入门摄影买什么相机好?
  • 5分钟精通AMD Ryzen调试:SMUDebugTool终极指南
  • 手机号逆向查询QQ号:Python3实现的完整技术解析与实战应用
  • 别再瞎找了!一行代码让HTML秒变MP4,爽到飞起
  • 嵌入式系统中EEPROM与MCU的SPI通信与数据存储实践
  • 外贸软件哪个好?2026外贸企业选型指南(附对比维度)
  • 市场专业的软件开发制造厂哪家靠谱
  • 解锁AMD Ryzen性能潜力:SMU Debug Tool完全指南
  • 抖音视频下载终极指南:免费工具助你轻松保存精彩瞬间
  • 手机号逆向查询QQ号:Python工具的高效实现方案
  • 第15章|未雨绸缪:Hooks 高级模式与工程实践
  • 免费Steam创意工坊下载神器WorkshopDL:无需客户端轻松获取模组
  • PotatoNV实战解密:从华为Bootloader解锁问题到解决方案的完整路径
  • 浏览器一键解锁网盘全速下载:八大平台直链获取终极方案
  • Codex成本优化:聚合平台实战方案
  • Apifox实战:基于契约先行的跨语言API调用与代码生成指南
  • 苏州哪里可以买仿真绿植?家用商用采购避坑全解析
  • 微信小程序反编译终极指南:用unveilr轻松提取小程序源码
  • JMeter-Bzm-Plugins进阶指南:从安装部署到性能调优实战
  • 为什么18KV绝缘鞋越来越受欢迎?真正原因曝光!
  • 第09章|触类旁通:SKILL.md 结构与触发机制
  • Deceive终极指南:3步实现英雄联盟隐身,享受纯粹游戏时光
  • PTK密钥传递攻击:Kerberos AES密钥横向移动实战与防御
  • LeetCode 2492.两个城市间路径的最小分数:找1所在连通图的最小边(BFS / DFS)
  • 如何用Python快速解析通达信数据:5个实用技巧提升量化分析效率