#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 |