나의 기록, 현진록

[War Game] pwnable.kr passcode 본문

War Game/pwnable.kr

[War Game] pwnable.kr passcode

guswlsdk 2018. 4. 26. 17:27
반응형


pwnable.kr

passcode










main 함수에서는


welcome()

login()

순으로 함수를 호출한다.



welcome()


char[100]의 name 배열에


%100s 때문에 100칸만 입력 받을 수 있다.















-0x70이 name 주소이다.





login()에서 scanf()를 보자.


scanf("%d", passcode);


&passcode가 아니다.


즉 passcode의 값인 주소에 입력 받는 것이다.








-0x10가 passcode1 주소이다.


name부터 passcode1 까지의 거리는 


0x60이고, 10진수로는 96이다.


name에 100칸을 입력 받을 수 있고 100-96인 4byte를 덮을 수 있다.


4byte는 주소를 입력하기 좋은 크기이다.


아마도 주소 입력을 요구하는 것 같다.





마침 login() 함수에서는 fflush 함수가 있다.


버퍼의 내용을 지워주는 함수이지만


그것이 중요한 것이 아니고,


GOT(global offset table)을 이용해보자.


점프할 주소를 원하는 주소로 변경할 수 있다.


4byte를 오버라이트할 수 있기 때문이다.


 







0x804a004 주소에 있는 내용을 system("/bin/cat flag"); 주소로 넣어주면 될 것이다.








0x080485e3을 10진수로 바꾸어 입력해야 한다.


scanf("%d", passcode1);에서 


%d때문에 정수로 입력 받기 때문이다.






반응형

'War Game > pwnable.kr' 카테고리의 다른 글

[War Game] pwnable.kr random  (0) 2018.05.01
[War game] pwnable.kr bof  (0) 2018.04.03
[War Game] pwnable.kr collision  (0) 2018.04.02
[War Game] pwnable.kr fd  (0) 2018.03.29
pwnable.kr 접속 방법  (0) 2018.03.29