Security || AI

[Protostar] stack2 본문

워게임(wargame)/Protostar

[Protostar] stack2

보안&인공지능 2021. 2. 1. 23:55

 

먼저, stack2를 실행하면 아래와 같은 뜻이 나온다.

stack2: please set the GREENIE environment variable

이를 통해 환경변수를 사용하여 익스플로잇을 해야한다는 힌트를 얻을 수 있다.

gdb로 main 분석

 

여기서 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