일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Protostar
- write up
- 번역
- 카이사르
- 시스템해킹
- picoCTF2018
- 정답
- general skills
- WEB
- Smashing The Stack For Fun And Profit
- cryptography
- 해킹 공부
- forensics
- dreamhack
- 스택
- 리눅스
- picoCTF
- 시스템
- #hacking
- 해설
- writeup
- #picoCTF2018
- KOISTUDY
- CTF
- reversing
- 버퍼오버플로우
- Hxd
- Aleph One
- grep
- 리버싱
Archives
- Today
- Total
Security || AI
[Protostar] stack2 본문
먼저, stack2를 실행하면 아래와 같은 뜻이 나온다.
stack2: please set the GREENIE environment variable
이를 통해 환경변수를 사용하여 익스플로잇을 해야한다는 힌트를 얻을 수 있다.
여기서 main+91에 하당하는 0x8048618의 문자열을 확인하면 답이 풀린다는 문자열을 확인할 수 있다.
그러므로, main+84의 cmp가 참일 경우에 문제를 풀 수 있어, main+84에 브레이크포인트를 걸어보았다.
다음으로 여기서 값이 입력되는 것은 GREENIE라는 환경변수에 적용되므로 환경 변수를 지정해주어야 한다.
이때, [esp+0x58]의 값을 0xd0a0d0a로 바꾸어야하므로 해당 주소 전까지의 거리를 재기 쉽게 pattern create를 사용하여 문자열을 만들어준다.
export GREENIE='AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL'
그 다음, gdb ./stack2를 실행시킨 다음, r 명령어로 실행하면 EAX가 AAdA이다.
그러므로, pattern offset AAdA을 통해 확인하면 64가 나온다.
여기까지 힌트를 얻어 총 64개의 문자열과 0xd0a0d0a0을 조합하여 GREENIE 환경변수에 저장한다면 풀 수 있을 것이다.
여기서 d0a0을 \n\r로 표현할 수 있으므로, 아래와 같이 환경변수를 설정하면 풀린다.
export GREENIE=$(python -c 'print("A"*64+"\n\r"*2)')
반응형
'워게임(wargame) > Protostar' 카테고리의 다른 글
[Protostar] stack5 (0) | 2021.06.13 |
---|---|
[Protostar] stack4 (0) | 2021.02.03 |
[Protostar] stack3 (0) | 2021.02.02 |
[Protostar] stack1 (0) | 2021.01.04 |
[Protostar] stack0 (0) | 2019.08.13 |