ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

如何破解 PwnPad 第14关 Ladybirds:STM32 SWD 调试口攻击与 GDB 内存补丁完全指南

如何破解 PwnPad 第14关 Ladybirds:STM32 SWD 调试口攻击与 GDB 内存补丁完全指南 【免费下载链接】PwnPadPwnPad is an affordable, hands-on hardware hacking platform built for practical learning. It features a range of challenges that walk users through key hardware security concepts, from PCB design to side-channel attacks.项目地址https://gitcode.com/gh_mirrors/pwn/PwnPad点击查看免费下载PwnPad 是一款低成本、可动手的硬件破解学习平台带你从 PCB 设计一路走到侧信道攻击。第14关Ladybirds正是它的经典进阶题通过ST-Link接上 STM32 的SWD 调试口用gdb-multiarch停下 CPU、找到固件里的保险箱校验逻辑再用一句内存补丁绕过去直接解锁保险箱并读到 flag。本文用最少代码带你完整走通这套SWD 调试 内存补丁的硬件攻击思路。 全程只需一个ST-Link调试器配合 PwnPad 自带的 STM32F1x 模块 即可完成无需额外烧录。认识 PwnPad你的硬件破解训练场PwnPad 的核心是一个可插拔、可跳线选择的硬件平台全部搭建成本约20 美元完成所有挑战的工具约50 美元即可搞定。它把 UART、SPI、I2C、故障注入、侧信道等真实攻击场景做成了 15 个循序渐进的关卡。平台用一个5 位跳线Challenge Select来决定当前跑哪个挑战切换挑战不用重新烧录固件改好跳线按一次 RESET 就行。这个设计让 Ladybirds 这类 SWD 题可以反复演练。想从零焊一块自己的直接看官方 docs/PwnPad_building_instruction.pdf。为什么这题值得做Ladybirds 是 PwnPad 里少有的黑盒调试 逆向组合题它逼你掌握三个真实安全岗位的核心技能物理接入调试口找到 SWD 焊盘、确认电压域调试器工作流ST-Link → GDB 服务器 → halt 目标核内存/Flash 补丁不重新编译直接改运行中的程序逻辑掌握它第15关的 JTAG 固件提取也就水到渠成。挑战目标用 SWD 解锁保险箱打开 challenges/14. Ladybirds.md 就能看到本题的官方剧情一台紧凑保险箱被一段顽固的固件校验保护着你要通过暴露出来的SWD 焊盘把某个特定内存位置改掉让保险箱开门。官方给出的任务清单是找到并识别板上的SWD 焊盘确认目标电压域别想当然当成 3.3V接好 ST-Link注意接地与 VTarget用st-util 或 openocd拉起 GDB 服务器再用gdb-multiarch连上停核monitor reset halt/ 中断定位认证例程查看 RAM 与 Flash找到那道校验打上补丁解锁保险箱 通关判定很简单PwnPad 主板的 handheld_challenge_swd() 会持续读一个输入脚一旦 STM32 侧把开门信号拉高串口就打印DOOR STATUS: UNLOCKED和 flag——你的补丁是否生效一眼可见。准备工作硬件与工具清单类别需要的东西说明调试器ST-Link V2/V3提供 SWD 信号与 VTarget软件gdb-multiarch通用 GDB跨架构连目标核软件st-util或openocd为 ST-Link 拉起 GDB 服务器线材杜邦线 万用表接 SWD 焊盘、测电压文档SWDJTAG 模块固件理解 STM32 侧开门信号逻辑SWD 只用两根信号线SWDIO/SWCLK加上GND和参考VTarget就够了比 JTAG 的 4 线接口更轻量这也是它被大量量产设备保留下来的原因。第 1 步配置 Challenge Select 跳线按 challenges/14. Ladybirds.md 末尾的Challenge Select表设置 5 个跳线1 -- 1 2 -- 0 3 -- 0 4 -- 1 5 -- 1设好后按下主板上的RESET键PwnPad 就会加载 Ladybirds 挑战。跳线是 5 位二进制选择器Pin1 为最低位Pin5 为最高位这个机制在 challengeSelector() 里实现。第 2 步连接 ST-Link 到 SWD 接口在 STM32F1x 模块原理图 上找到 SWD 焊盘SWDIO、SWCLK、GND、VTarget / 3.3V接法ST-Link 的 GND→ 模块GND必须先共地防止电平漂移SWDIO→ SWDIOSWCLK→ SWCLKVTarget→ 目标3.3V参考脚⚠️ 官方反复强调别假设是 3.3V。先用万用表量一下目标实际电压域接错电压是烧芯片最常见的原因。第 3 步启动 GDB 服务器并 halt CPU开一个终端拉起 GDB 服务器二选一# 方式 Ast-util轻量 st-util -p 32f103 # 方式 BOpenOCD openocd -f interface/stlink.cfg -f target/stm32f1x.cfg再开一个终端连目标核并停核gdb-multiarch (gdb) target remote :3333 (gdb) monitor reset halt此时 CPU 已被halt暂停你可以安全地读寄存器、看内存、翻 Flash而不会破坏运行状态。第 4 步定位校验逻辑并内存补丁停核后先用x/i $pc看当前指令、用info registers看寄存器再结合 SWDJTAG.ino 的逻辑它会读一个输入脚条件成立才把开门信号拉高。换句话说保险箱锁着的根源是某个判断没通过。两种常见、非破坏性的打补丁手法改内存值找到那个控制开门信号的变量/寄存器直接set {int}0xADDR 1NOP 掉分支把校验的BNE/BL指令改成NOP0x00 0x00让程序无条件通过在 GDB 里就是(gdb) x/i 0x08000xxx # 找到那条条件跳转 (gdb) set {int}0x20000xxx 1 # 方案1直接写内存 # 或 set {hword}0x08000xxx 0x0000 # 方案2NOP 掉分支 优先选内存补丁而非改写 Flash——它不破坏固件随时可重启复位最安全、最可逆。第 5 步恢复运行读取 flag补丁打好后恢复运行(gdb) continue回到串口默认 9600 波特率你会看到[] DOOR STATUS: UNLOCKED ------------------------- TS{5WD_15_P0werFu11_Use}保险箱打开flag 到手 。想记录进度和提交 flag可以跑一下本地 Web 应用bash ./tools/webapp/start.sh然后浏览器打开http://127.0.0.1:12530提交。启动脚本见 tools/webapp/start.sh。常见坑位与排错现象可能原因处理target remote连不上服务器没起 / 地址端口不对确认 st-util 或 openocd 已运行停核后无响应电压域没量对、没共地万用表复核 3.3V先接 GND补丁后不开门改错了变量地址回到x/i $pc重新定位判断分支一接上就死机SWDIO/SWCLK 接反对照原理图交换两根线进阶从 SWD 到 JTAG第15关搞定 Ladybirds 后challenges/15. Ladybird I Am Your Father.md 会把难度再提一档这次保险箱隐藏了固件你得用JTAG OpenOCD把整段 Flash 读成二进制离线做静态/动态分析再回来打补丁。SWD 的两线调试经验会直接帮你上手 JTAG 的四线接口这也是 PwnPad 把它俩排在一起的原因。小结SWD 只用 SWDIO SWCLK 两根信号线接好 GND 与电压参考是安全前提st-util / openocd 拉服务器gdb-multiarch 停核是调试 STM32 的标准姿势内存补丁优先于改写 Flash非破坏、可逆、最安全打通 Ladybirds你就掌握了硬件安全里最实用的调试口攻击 内存补丁组合拳动手试试吧PwnPad 的下一扇门正等着你的 ST-Link。赞分享【免费下载链接】PwnPadPwnPad is an affordable, hands-on hardware hacking platform built for practical learning. It features a range of challenges that walk users through key hardware security concepts, from PCB design to side-channel attacks.项目地址https://gitcode.com/gh_mirrors/pwn/PwnPad点击查看免费下载相关推荐SerenityOS 移植 GDB 调试器6 个关键补丁的源码级解析SerenityOS 移植 GDB 调试器6 个关键补丁的源码级解析 本篇技术指南以 Ports/gdb/patches/ReadMe.md https://操作系统内核驱动PX4 Autopilot 使用 MCU-Link 调试探针LinkServer 与 pyOCD 的 SWD/GDB 完整调试指南PX4 Autopilot 使用 MCU Link 调试探针LinkServer 与 pyOCD 的 SWD/GDB 完整调试指南 本文以 PX4 Autop嵌入式物联网机器人自动驾驶智能硬件os-tutorial 第 14 讲代码重构、可扩展 Makefile 与用 GDB 调试内核的完整实战os tutorial 第 14 讲代码重构、可扩展 Makefile 与用 GDB 调试内核的完整实战 导读 本篇文章聚焦 os tutorial http示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表