관리 메뉴

Information Security

Stack 0 본문

WarGame/Protostar

Stack 0

HackingPractice 2020. 8. 31. 16:19

volatile 함수는 변수를 사용할 때 최적화에서 제외하여 항상 메모리에 접근하도록 하는 함수다.  modified 4byte 정수형을 선언하고, buffer 64byte를 선언한다. modified 변수를 0으로 초기화하고, gets() 함수를 통해 사용자로부터 buffer에 입력받는다.

그림 1-1 stack 0

./stack0 AAAA 입력 시 "Try again?" 메시지를 보여준다.

그림 1-2 Try again

gdb ./stack 0 명령어를 입력 후 main 부분을 확인했다.

그림 1-3 main

break point를 main+42 설정 후 run을 해주고 a 80개를 입력해주었다. 80 바이트 이유는 0x54 - 0x4 =0x50(80) 이기 때문이다.

그림 1-4 break point

main+39를 보면 $rbp-0x40로 되어 있다. modfied의 주소이기 때문에 해당 주소를 보면 0x4141414141414141이 들어가 있는 것을 알 수 있다.

그림 1-5 modified 주소

레지스트 eax를 확인하면 0x41414141을 확인할 수 있다.

그림 1-6 eax

./stack 0 실행 후 80byte를 입력하면 해결되는 것을 알 수 있다.

그림 1-7 정답

'WarGame > Protostar' 카테고리의 다른 글

Stack 4  (0) 2020.09.23
Stack 3  (0) 2020.09.23
Stack 2  (0) 2020.09.23
Stack 1  (0) 2020.08.31
Peda 설치  (0) 2020.08.08