본문 바로가기

Wargame/[pwnable.kr]

(6)
[pwnable.kr] passcode 문제 풀이 ※ pwnable.kr 워게임 passcode 문제이다. 1. 프로그램 분석 #include #include void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("%d", passcode2); printf("checking...\n"); if(passcode1==338150 && passcode2==13371337){ printf("Login OK!\n"); system("/bi..
[pwnable.kr] random 문제 풀이 ※ pwnable.kr의 워게임 random 문제이다. 1. 프로그램 분석 #include int main(){ unsigned int random; random = rand();// random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.\n"); return 0; } rand함수로 랜덤값을 생성하고 변수 하나를 입력받아 변수와 랜덤값을 xor 연산하여 값이 0xdeadbeef가 되면 system 함수를 호출하는 프로그..
[pwnable.kr] flag 문제 풀이 ※ pwnable.kr의 워게임 flag 문제이다. 1. 프로그램 분석 1)flag 실행 파일만 있기 때문에 실행 파일을 실행시켜 보았다. 동적 메모리를 할당하고 flag가 그 메모리에 복사되어 진다고 한다. 2) 그래서 flag 실행 파일을 gdb로 분석을 하려고 하였다. 하지만 main함수를 찾을 수 없었다. 3) flag 실행 파일을 cat으로 출력하여 보았다. UPX라는 단어가 보인다. 4) UPX는 패킹 도구 중 하나이다. 패킹은 파일의 크기를 줄이기 위해 압축하는 것이다. 파일 코드를 숨기기 위해 패킹을 하기도 한다. 그러므로 실행 파일을 UPX 언패킹을 시켜 gdb로 분석할 것이다. 2. 풀이 1) UPX 언패킹을 할 것이다. UPX 언패킹은 오픈소스로 gitgub에 있기 때문에 설치하여 사..
[pwnable.kr] bof 문제 풀이 ※ pwnable.kr의 워게임 bof 문제이다. 1. bof.c 파일을 열어보면 다음과 같다. #include #include #include 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; } 2. 프로그램 분석 main 함수가 func 함수를 호출하여 실행하는 프로그램이다. func 함수는 매개변수로 받은 값이 0xcafebabe와 일치하..
[pwnable.kr] collision 문제 풀이 ※ pwnable.kr의 워게임 collision 문제이다. 1. 일단 문제를 풀기 위해 서버에 접속한다. 2. 리눅스 명령어 ls로 확인한 결과 col 실행파일, fd.c 파일, flag 파일이 존재한다는 것을 알 수 있다. 3. col.c 파일을 열어보면 다음과 같다. #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
[pwnable.kr] fd 문제 풀이 ※ pwnable.kr의 워게임 fd 문제이다. 1. 일단 문제를 풀기 위해 서버에 접속하였다. 2. 리눅스 명령어 ls로 확인해본 결과 fd 실행파일, fd.c 파일, flag 파일이 존재하는것을 알 수 있다. 3. fd.c 파일을 열어보면 다음과 같다. #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc