일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- general skills
- CTF
- writeup
- cryptography
- Protostar
- picoCTF
- WEB
- 스택
- write up
- KOISTUDY
- Smashing The Stack For Fun And Profit
- grep
- forensics
- #picoCTF2018
- 카이사르
- 시스템해킹
- #hacking
- reversing
- dreamhack
- 시스템
- 해킹 공부
- 리버싱
- 정답
- 리눅스
- 번역
- Aleph One
- 버퍼오버플로우
- 해설
- picoCTF2018
- Hxd
Archives
- Today
- Total
Security || AI
[Protostar] stack1 본문
gdb를 사용하여 디스어셈블리를 진행한 결과 위와 같이 나온다.
해당 문제는 argument를 사용하여 값을 입력 받는다. ex) ./stack1 AAAA
그러므로 argument의 주소를 확인해보면 main+71에서 eax와 ABCD를 검증하는 것을 확인할 수 있는데, 이때, eax는 esp+0x5c이 되므로 esp+0x5c의 값을 abcd로 바꾸어야 한다.
참고로 현재 esp+0x5c에는 <main+35>를 통해 0이 들어있는 것을 확인할 수 있다.
해당 함수를 보면 argv[1]의 주소인 esp+0xc를 strcpy에 저장될 변수인 0x1c에 주소를 저장하게 된다.
그러므로, 0x5c-0x1c = 0x40이 되며, 64byte만큼 버퍼를 채운 후, 뒤를 abcd로 채우면 된다.
buffer (64byte) |
0x61626364로 바꾸어야 하는 변수 (4byte) |
ebp |
이때, 리틀 엔디안 방식이므로 'A'*64+'dcba'가 되어야 abcd로 읽게 된다.
반응형
'워게임(wargame) > Protostar' 카테고리의 다른 글
[Protostar] stack5 (0) | 2021.06.13 |
---|---|
[Protostar] stack4 (0) | 2021.02.03 |
[Protostar] stack3 (0) | 2021.02.02 |
[Protostar] stack2 (0) | 2021.02.01 |
[Protostar] stack0 (0) | 2019.08.13 |