관리 메뉴

Information Security

Stack 1 본문

WarGame/Protostar

Stack 1

HackingPractice 2020. 8. 31. 16:47

volatile 4byte int type 변수 modified 선언, char buffer 64byte char type arrary buffer 선언했다.

modfied 값을 0x61626364로 초기화해야 하는 것 같다.

그림 2-1 stack1.c

AAAA, BBB를 입력해보았는 데 Try again 메시지를 보여준다.

그림 2-2 Try again

A를 여러개 입력 해 overflow 발생시켰지만 modified 값이 "0x61626364"로 변경되지 않을 경우 아래와 같은 메시지를 보여준다.

그림 2-3 overflow

disas mian 명령어를 통해 main 함수를 확인했다. 0x61626364와 modified를 비교해야 하므로 modfied = rbp - 0x4(main+76)이다. buffer는 strcpy의 detination이므로 *main+68이다. rdi가 rax로부터 오므로 rax가 오는 메모리 값 rbp - 0x50이다. modified는 0x40, buffer는 0x50이다. 따라서 연산하면 0x4c(76)이다.

그림 2-4 main 함수

break point main+79 설정 후 A를 76개 입력했다.

그림 2-5 break point

modified 위치 $rsp를 보면 0x41이 들어가 있는 것을 알 수 있다.

그림 2-6 modfifed 주소

modified 변수의 값을 수정하기 위해서 76byte의 padding이 필요하고 modified를 "0x61626364"로 대입하면 된다.

그림 2-7 정답

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

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