#include <stdio.h>

#include <string.h>

#include <stdlib.h>

 

void func(int key){

char overflowme[32];

printf("overflow me : ");

gets(overflowme);        //smash me!

if(key == 0xcafebabe){

system("/bin/sh");

}

else{

printf("Nah..\n");

}

}

int main(int argc, char* argv[]){

func(0xdeadbeef);

return 0;

}




아이다로 열어보면 a1이 0xcafebabe이여야 system함수가 호출되고 아니라면 Nah.. 라는 문자열 출력과 함께 프로그램이 끝난다. ida를 이용해서 변수s와 a1사이의 거리를 쉽게 구할 수 있었다. 그리고 stdin으로 인자를 받기 때문에 아래와 같은식으로 문제를 풀면 된다. 원본에 먼저 풀어보고 성공을 확인하고 서버에 했다. 메모리에는 리틀엔디언 방식으로 써지기 때문에 

/xbe\xba\xfe\xca와 같이 넣어준다는 사실을 유의하자.



'System Hacking > pwable.kr' 카테고리의 다른 글

06.Pwnable random  (0) 2018.02.15
05.Pwnable passcode  (0) 2018.02.15
04.Pwnable flag  (0) 2018.02.13
02.Pwnable col  (0) 2017.11.23
01.Pwnable fd  (0) 2017.11.21

+ Recent posts