Wargame
Finding Flags
1. intro 2. code 및 분석 2.1. code 2.2. 분석 N/A 3. exploit 대놓고 있는 플래그. CTF welcome 같네.
Register
1. intro 2. code 및 분석 2.1. code 2.2. 분석 리버싱을 위해 하는 크립토 공부. 가입부터 크립토를 요구한다 ㅋㅋㅋ Roman emperor's cipher는 Ceasar cipher를 이야기하며, 아래 링크와 같이 shift cipher다. https://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher - Wikipedia From Wikipedia, the free encyclopedia Simple and widely known encryption technique The action of a Caesar cipher is to replace each plaintext letter with a different one a fixed n..
cmd2
1. intro 2. code 및 분석 2.1. code #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag")!=0; return r; } extern char** environ; void delete_env(){ char** p; for(p=environ; *p; p++) memset(*p, 0, strlen(*p)); } int main(int argc, char* argv[],..
cmd1
1. intro 2. code 및 분석 2.1. code #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } 2.2. 분석 putenv를 통해 PATH 환경변수를 임의 폴더로 변경한다. 이는 곧 일반적으로 실행했던 ls, cat 등의 명령어가 그대로..
lotto
1. intro 2. code 및 분석 2.1. code #include #include #include #include unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto bytes : "); fflush(stdout); int r; r = read(0, submit, 6); printf("Lotto Start!\n"); //sleep(1); // generate lotto numbers int fd = open("/dev/urandom", O_RDONLY); if(fd==-1){ printf("error. tell admin\n"); exit(-1); } unsigned char lotto[6]; if(read(fd, lo..
blackjack
1. intro 2. code 및 분석 2.1. code int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); scanf("%d", &bet); if (bet > cash) //If player tries to bet more money than player has { printf("\nYou cannot bet more money than you have."); printf("\nEnter Bet: "); scanf("%d", &bet); return bet; } else return bet; } // End Function 2.2. 분석 코드가 길기에 주요 함수만 따왔다. 입력받은 값의 크기가 cash보다 크지만 않으면 되기에 음..
flag
1. intro 2. code 및 분석 2.1. code - unpacking 후 code이다. int __cdecl main(int argc, const char **argv, const char **envp) { char *dest; // [rsp+8h] [rbp-8h] puts("I will malloc() and strcpy the flag there. take it.", argv, envp); dest = (char *)malloc(100LL); strcpy(dest, flag[0]); return 0; } 2.2. 분석 파일을 분석하려 열었더니 뭔가 좀 이상하다. packing 여부를 확인하였더니 UPX로 packing되어있었다. unpack info에 나와있는 것처럼 파일을 다운받아 unpa..