BUUCTF-babyheap_0ctf_2017

【BUUCTF - PWN】babyheap_0ctf_2017 checksec一下,堆题果然是保护全开 IDA打开看看,首先mmap一块随机区域,用于存放我们申请的块的属性,然后输出菜单,有allocate、fill、free、dump功能 可以注意到,在创建堆的时候,将堆的地址和大小存放在了mmap的区域中,并且使用的是calloc,会将申请的内存区域清零 漏洞点在fill函数中,没有限制输入内容的长度,从而可以堆溢出 删除堆后会将指针置零 输出... 阅读详情

checksec 

标准堆菜单

IDA

Allocate

void __fastcall sub_D48(__int64 a1)
{
  int i; // [rsp+10h] [rbp-10h]
  int v2; // [rsp+14h] [rbp-Ch]
  void *v3; // [rsp+18h] [rbp-8h]

  for ( i = 0; i <= 15; ++i )
  {
    if ( !*(_DWORD *)(24LL * i + a1) )
    {
      printf("Size: ");
      v2 = sub_138C();
      if ( v2 > 0 )
      {
        if ( v2 > 4096 )
          v2 = 4096;
        v3 = calloc(v2, 1uLL);
        if ( !v3 )
          exit(-1);
        *(_DWORD *)(24LL * i + a1) = 1;
        *(_QWORD *)(a1 + 24LL * i + 8) = v2;
        *(_QWORD *)(a1 + 24LL * i + 16) = v3;
        printf("Allocate Index %d\n", (unsigned int)i);
      }
      return;
    }
  }
}

分配内存,没有什么异样 

Fill

__int64 __fastcall sub_E7F(__int64 a1)
{
  __int64 result; // rax
  int v2; // [rsp+18h] [rbp-8h]
  int v3; // [rsp+1Ch] [rbp-4h]

  printf("Index: ");
  result = sub_138C();
  v2 = result;
  if ( (int)result >= 0 && (int)result <= 15 )
  {
    result = *(unsigned int *)(24LL * (int)result + a1);
    if ( (_DWORD)result == 1 )
    {
      printf("Size: ");
      result = sub_138C();
      v3 = result;
      if ( (int)result > 0 )
      {
        printf("Content: ");
        return sub_11B2(*(_QWORD *)(24LL * v2 + a1 + 16), v3);
      }
    }
  }
  return result;
}

进行填充 ,阅读代码看到fill对我们的输入没有限制,可以利用,填充过多数据造成堆溢出

Free

__int64 __fastcall sub_F50(__int64 a1)
{
  __int64 result; // rax
  int v2; // [rsp+1Ch] [rbp-4h]

  printf("Index: ");
  result = sub_138C();
  v2 = result;
  if ( (int)result >= 0 && (int)result <= 15 )
  {
    result = *(unsigned int *)(24LL * (int)result + a1);
    if ( (_DWORD)result == 1 )
    {
      *(_DWORD *)(24LL * v2 + a1) = 0;
      *(_QWORD *)(24LL * v2 + a1 + 8) = 0LL;
      free(*(void **)(24LL * v2 + a1 + 16));
      result = 24LL * v2 + a1;
      *(_QWORD *)(result + 16) = 0LL;
    }
  }
  return result;
}

free一般出现漏洞的概率很大,在free之后没有进行置0就会出现一系列漏洞利用

但是本题进行了置0,没有利用的 

Dump

int __fastcall sub_1051(__int64 a1)
{
  int result; // eax
  int v2; // [rsp+1Ch] [rbp-4h]

  printf("Index: ");
  result = sub_138C();
  v2 = result;
  if ( result >= 0 && result <= 15 )
  {
    result = *(_DWORD *)(24LL * result + a1);
    if ( result == 1 )
    {
      puts("Content: ");
      sub_130F(*(_QWORD *)(24LL * v2 + a1 + 16), *(_QWORD *)(24LL * v2 + a1 + 8));
      return puts(byte_14F1);
    }
  }
  return result;
}

 利用思路

泄露libc基址,通过伪造fake_chunk来向hook附近通过Fill函数填充溢出覆盖

malloc_hook 是一个libc上的函数指针,调用malloc时如果该指针不为空则执行它指向的函数,可以通过写malloc_hook来getshell,修改malloc_hook为某个one_gadget

这道题查阅了好多师傅们的博客

泄露libc的方法有两种

1.利用fastbin double free

babyheap_0ctf_2017——堆入门1 - PYozo_free - 博客园 (cnblogs.com)

2.利用unsorted bin

堆学习:babyheap_0ctf_2017——经典fastbin attack - 『软件调试区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn 

EXP

目前的脚本还没有打通远程

这篇博客讲述了buuctf上打不通的原因,而且师傅具体分析的也很细致,推荐学习

[FastBinAttack实战]babyheap_0ctf_2017 – TokameinE

[BUUCTF] babyheap_0ctf_2017 有点回想起当初第一次拿到flag时的感觉,继续加油。 本题考察知识点:**Fastbin Attack** 与 **Unsorted Bin Attack。** 通过使用Fastbin Attack与堆溢出漏洞,我们可以绕过Free后指针置零,从而达到在置零指针后获取堆块fd指针。 通过Unsorted Bin Attack,我们可以泄露Libc地址。 然后我们再使用Fastbin Attack替换__malloc_hook 本文写给自己,也写给跟我一样全网寻找详细解答的师傅们。 阅读详情

相关推荐

[BUUCTF]PWN——babyheap_0ctf_2017

[BUUCTF]PWN19——babyheap_0ctf_2017 附件 步骤: 例行检查,64位,保护全开 试运行一下程序,看到这个布局菜单,知道了这是一道堆的题目,第一次接触堆的小伙伴可以去看一下这个视频,我也刚接触堆不久,有些地方我也讲不清楚 ida载入,先看一下main函数,做堆题的时候需要将程序给理清楚了,这边的几个选项函数一开始不是如图所示的,我们可以右击给他重新命名一下,为了让我们看的更清楚 add,就是简单的创建一个chunk edit,我们写入数据的长度是我们可以自己控制的,存在堆

mcmuyanga的博客 4713

babyheap_0ctf_2017 详细解析【BUUCTF】

好家伙,保护全开,根据文件名,可以判断这是一道堆题目,刷了这么久,终于遇到堆题目了,解析就写的详细点。先看main函数,很简单就是各类个目录函数,一步一步来看把。

qq_41696518的博客 4683

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 552

0ctf_2017_babyheap详解

本文主要列出0ctf_2017_babyheap的详细过程 主要参考:https://bbs.pediy.com/thread-223461.htm 程序流程 allocate:申请size大小的块 fill:对idx的块,设置size,并填入content free:释放idx的块 dump:打印idx的块内容 漏洞分析 fill中的size可以重新设置,故可以造成堆溢出。 方法:fastbin attack double free泄露libc 【small/large chunk释放,fd和.

像初雪一样自由洒落 4772

CoaXPress FMC子卡:高速图像采集与FPGA原型开发实战指南

在机器视觉和工业检测领域,高速、可靠的数据传输是核心需求。CoaXPress(CXP)协议作为一种基于同轴电缆的高速接口标准,通过其高带宽、长距离传输和低延迟的特性,有效解决了传统接口在确定性实时传输方面的短板。其技术价值在于为海量图像数据提供了稳定、高效的物理层和数据链路层解决方案,广泛应用于半导体检测、医疗成像等对吞吐量有极致要求的场景。要实现CXP系统的快速原型验证,集成了高速SerDes接口和时钟管理的FMC子卡与FPGA开发板的组合成为关键。这种平台将复杂的硬件设计封装,让开发者能聚焦于图像处理算

weixin_31815843的博客 278

SAP成本计划BAPI接口BAPI_COSTACTPLN_POSTPRIMCOST深度解析与实战指南

在SAP ERP系统中,成本计划是财务与控制模块的核心功能,它涉及对企业未来成本支出的预测与规划。其原理是通过结构化数据模型,将成本要素分配到具体的成本对象上,以实现预算编制和成本控制。这一技术的核心价值在于实现成本数据的标准化、自动化处理,从而提升财务流程效率与数据准确性。在应用场景上,成本计划广泛应用于年度预算编制、项目成本预测、系统间数据集成以及历史数据迁移等关键业务环节。本文聚焦于实现上述流程自动化的关键技术——SAP标准接口BAPI_COSTACTPLN_POSTPRIMCOST,并深入探讨其在高

weixin_29657209的博客 350

[BUUCTF]-PWN:babyheap_0ctf_2017解析

但是这里要解释一点,为什么不能直接释放堆块4,虽然这样堆块4也能进入unsortedbin里,但是要注意free堆块后指向堆块的指针将会被置零,大致意思就是free了之后,index4就不指向那个堆块了,这时候dump(4)就是无效的,虽然那个堆块里面有mainarena+88的地址,但dump(4)不会打印出里面的地址,所以我们要让两个堆块的指针指向同一个堆块,这样在释放掉一个堆块时还能用另一个指针利用该堆块。后面alloc(0x60)与这里的0x7f有关。

2301_79326813的博客 1355

因果推断(二):因果推断涉及的ITE、ATE、CATE等效应

因果效应也称为**处理效应(Treatment effect)**是用于评判干预与否的结果差异的指标(处理变量对结果变量的影响)。比如在接受治疗组中,如果这些人不接受治疗,这组人接受治疗和不接受治疗的效应差异是多少。定义为实验组中每个个体的处理效应差异,比如一个个体在接收治疗和不接受治疗的两个处理方式的健康程度得分的差。但是一个人因为不可能。比如我们想探究接受治疗的男性用户和不接受治疗的男性用户的平均效果差异就是CATE。前面说ITE是无法观测的,是因为一个人不能同时接受治疗又不接受治疗,这里关键的就是。

Y1n的博客 3713

BUUCTF babyheap_0ctf_2017

这样就很清晰明了,0x90的地址被释放了两次,由于unsortbins被释放后其中fd指针和bk指针会指向main_arena+88的地址,其中__malloc__hook的地址在main_arena-0x10的地方,我们需要构造一个fakechunk且在__malloc_hook附近,才方便修改。修改成0x31的头部size后,接着又修改回原来的size头部,接着释放掉3堆块,这样就有两个堆指针同时指向3堆块,索引2指向的是3,索引3也是指向的3。在写入数据内容中,没有限制大小,可以进行堆溢出。

2401_85052854的博客 380

Dify安装使用说明

dify可以说是一个功能不错的LLMOps,可以通过dify集中管理模型,可以通过界面创建AI应用,可以上传文档形成知识库,可以创建自定义工具(API),并可以对外提供API。相关功能类似Openai的GPTs或智谱的智能体,其他大厂的大模型也有类似功能,不过貌似只有dify是开源的。这就为个人本地部署AI应用提供了便利。

龙井茶的Sky 1万+

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

[BUUCTF]PWN——0ctf_2017_babyheap

0ctf_2017_babyheap 附件 步骤: 例行检查,64位程序,保护全开 本地试运行一下,看看大概的情况,经典的堆题的菜单 main函数 add() edit() delete() show() 利用思路 edit存在堆溢出,可以通过重叠堆来泄露libc 然后利用fastbin attack,修改malloc_hook为one_gadget 利用过程 首先来构造重叠堆 先申请3个chunk, add(0x10)#0 add(0x10)#1 add(0x80)#2 来看一

mcmuyanga的博客 873

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 663

BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分

可以在编辑堆的时候重新设置大小 存在堆溢出。delete函数的指针清零了 无UAF。开启了全保护 64位。

qq_33348179的博客 302

使用STARTER V5.6软件将项目文件下载到S120驱动器控制单元CF卡中的具体方法演示

使用STARTER V5.6软件将项目文件下载到S120驱动器控制单元CF卡中的具体方法演示

Robot_PLC_HMI_Automation 1913

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[BUUCTF]PWN——babyheap_0ctf_2017漏洞利用实战:从堆溢出到getshell

本文详细解析了BUUCTF PWN题目babyheap_0ctf_2017的堆漏洞利用过程,从堆溢出漏洞发现到Fastbin Attack泄露libc地址,最终通过劫持__malloc_hook实现getshell。文章提供了完整的EXP代码和实战技巧,帮助读者深入理解现代堆漏洞利用技术。

weixin_30687051的博客 549

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

buuctf babyheap_0ctf_2017

主体函数 我们可以在fill里发现可以任意输入字节 接下来我们就用chunk extend和off by one 图片来自 https://bbs.pediy.com/thread-246786.htm 具体看exp exp: from pwn import * #p=process('./babyheap_0ctf_2017') e=ELF('/lib/x86_64-linux-gn...

carol2358的博客 972

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[BUUCTF]PWN——babyheap_0ctf_2017漏洞利用全解析:从堆溢出到getshell

本文详细解析了BUUCTF竞赛中babyheap_0ctf_2017题目的漏洞利用过程,从堆溢出到最终getshell的全流程。通过分析fastbin attack技术,展示了如何绕过Canary、NX、PIE等保护机制,实现libc地址泄露和__malloc_hook劫持,为PWN爱好者提供了堆利用的实战教程。

weixin_29012677的博客 261

BUUCTF PWN入门:babyheap_0ctf_2017堆溢出漏洞实战解析(附完整EXP)

本文详细解析了BUUCTF PWN入门题目babyheap_0ctf_2017的堆溢出漏洞利用过程,包括fastbin attack和unsorted bin leak技术。通过实战演示如何泄露libc地址并劫持__malloc_hook获取shell,附完整EXP代码和调试技巧,适合CTF初学者学习堆漏洞利用。

weixin_29001683的博客 194

BUUCTF-babyheap_0ctf_2017题解(含详细过程与思路分析)

一、题目来源 BUUCTF-Pwn-babyheap_0ctf_2017 二、信息搜集 将题目给的可执行文件丢入Linux虚拟机中 通过file命令查看文件类型: 通过checksec命令查看本题采用的保护机制: 注意: 我的Ubuntu版本与题目版本不一致,为了消除libc版本不同的干扰,于是我使

cmdos的专栏 94

BUUCTF:0ctf_2017_babyheap

一天一道buu 今天做了这道堆题没有想象的难,毕竟是道1分的题 例行检查 64位程序,保护机制全开的,放到IDA 漏洞分析 漏洞在edit()函数中,我们add()之后,在edit()时,能再次控制size的大小,存在堆溢出。 分析好漏洞后,就开始利用 利用思路和分析 1.我们先利用堆溢出泄露出libc地址 2.劫持fd指针到malloc_hook,覆盖malloc_hook为one_gadget,当再次申请堆块时调用one_gadget,从而get shell 分析 首先堆布局,申请0x100的堆,释放

weixin_51055545的博客 1802

buuctf babyheap_0ctf_2017刷题

小僧是一名大二的学生,正在学习CTF竞赛(pwn)。第一次做到堆溢出的题,因为一个题害我好几天没有睡好觉,所有把题打通之后特地记录下学习的过程。都是一些个人理解,若有不对的地方,大佬们多多指教。下面我开始复现一下解题过程。

2501_92438811的博客 718

buuctf--babyheap_0ctf_2017

本文重在讲解fast bin攻击解题的细节,而非如何做出词题

2301_81060697的博客 730

[BUUCTF]pwn——0ctf_2017_babyheap wp

【代码】[BUUCTF]pwn——0ctf_2017_babyheap wp。

2301_79756878的博客 159

buuctf pwn babyheap_0ctf_2017

由于断断续续写了好久加上自身水平不足导致可能存在逻辑上的错误等等,如有错误,还望指出。

m0_60886511的博客 267
上一篇: BUUCTF-jarvisoj_level3
下一篇: BUUCTF-ez_pz_hackover_2016
Rt1Text
博客等级 码龄5年 14粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值