본문 바로가기
워게임/pwnable.kr

5번 - passcode

by meanjung 2022. 1. 15.

 

보통 scanf("%d", &passcode1) 과 같이 받는다.

그런데 여기서는 &passcode1이 아닌 passcode1로 받았다.

이 의미는 scanf에서 입력한 값이 1234라면, 1234라는 값이 passcode1에 저장되어있던 쓰레기값에 해당하는 주소에 저장된다는 것이다. 

그래서 아마 세그폴이 떴을 것이다. 

 

gdb

name은 ebp-0x70에서부터 100바이트만큼을 차지하고,

passcode1은 ebp-0x10에서부터 4바이트, passcode2는 ebp-0xc에서부터 4바이트만큼을 차지한다. 

 

name을 입력할 때 passcode1을 변조할 수 있다는 것을 알 수 있다.

그리고 scanf("%d", passcode1) 부분에서는 passcode1의 위치인 ebp-0x10에 담겨있는 값에 해당하는 위치에 값을 쓸 수 있는 것이다.

 

말이 좀 어렵지만..

 

 

 

여기서 fflush의 GOT을 확인한다. 0x804a004이다.

 

여기서 jmp 0x804a004를 실행하면 flag를 실행하도록 익스하면 된다.  

 

134514147 = 0x080485e3

 

'워게임 > pwnable.kr' 카테고리의 다른 글

8번 - leg  (0) 2022.01.31
6번 - random  (0) 2022.01.17
4번 - flag  (0) 2022.01.12
3번 - bof  (0) 2022.01.12
2번 - collision  (0) 2022.01.11

댓글