Security || AI

[Protostar] stack1 본문

워게임(wargame)/Protostar

[Protostar] stack1

보안&인공지능 2021. 1. 4. 15:47

stack1 스택 구조

gdb를 사용하여 디스어셈블리를 진행한 결과 위와 같이 나온다.

 

해당 문제는 argument를 사용하여 값을 입력 받는다. ex) ./stack1 AAAA

그러므로 argument의 주소를 확인해보면 main+71에서 eax와 ABCD를 검증하는 것을 확인할 수 있는데, 이때, eax는 esp+0x5c이 되므로 esp+0x5c의 값을 abcd로 바꾸어야 한다.

참고로 현재 esp+0x5c에는 <main+35>를 통해 0이 들어있는 것을 확인할 수 있다.

 

strcpy로 argv[1]을 eps+0x1c에 저장

해당 함수를 보면 argv[1]의 주소인 esp+0xc를 strcpy에 저장될 변수인 0x1c에 주소를 저장하게 된다.

그러므로, 0x5c-0x1c = 0x40이 되며, 64byte만큼 버퍼를 채운 후, 뒤를 abcd로 채우면 된다.

 buffer (64byte)
0x61626364로 바꾸어야 하는 변수 (4byte)
 ebp

 

이때, 리틀 엔디안 방식이므로 'A'*64+'dcba'가 되어야 abcd로 읽게 된다.

 

payload

 

익스플로잇 성공

반응형

'워게임(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