[Pwnable.kr] random
·
Hacking/System
ssh로 서버에 접속해보았다. 서버에 접속해 ls로 파일을 살펴보니 flag, random, random.c 파일이 있었다. random 파일을 실행시키고 11111111을 입력해 보니까 번호가 틀렸고, 2^32개의 경우를 시도해 보라고 얘기한다. cat을 통해서 random.c 파일을 확인해 보았다. rand() 함수를 이용해서 random 값을 구하는데, time을 이용해서 값을 구하지 않기 때문에 항상 고정된 값이 처음으로 나올 것으로 예상된다. 따라서 해당 값과 xdeadbeef 값을 같게 하면 flag를 읽을 수 있다. gdb를 통해서 random을 분석했다. main+18에서 rbp-0x4에 rand()의 값을 저장하는 것을 확인할 수 있다. main+18에 breakpoint를 설정하고 실행..
[Pwnable.kr] cmd1
·
Hacking/System
ls -l로 파일을 확인한 뒤에 flag 파일을 읽어보려 했으나 거절당했다. 그래서 cmd1.c 파일을 읽어보았다. #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; } filter() 함수에서 flag, sh, tmp를 사용하는 것을 막고 있었다. ..
[Pwnable.kr] blackjack
·
Hacking/System
전체 코드는 여기에서 볼 수 있다. https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html //Main Function int main(void) { int choice1; printf("\n"); printf("\n"); printf("\n"); printf("\n 222 111 "); printf("\n 222 222 11111 "); printf("\n 222 222 11 111 "); printf("\n 222 111 "); printf("\n 222 111 "); printf("\n"); printf("\n%c%c%c%c%c %c%c %c%c %c%c%c%c%c %c %c ", club, club, cl..
[Pwnable.kr] collision
·
Hacking/System
문제 해당 포트에 접속한 다음에 그 안에 있는 파일을 바탕으로 flag를 구하면 되는 문제이다. 접속했다. col, col.c, flag 파일이 존재한다. flag 파일을 읽으려고 하니 권한이 없다고 퇴짜맞았다. col.c 파일을 읽어보았다. unsigned long hashcode = 0x21DD09EC; if(strlen(argv[1]) != 20){ printf("passcode length should be 20 bytes\n"); return 0; } if(hashcode == check_password( argv[1] )){ system("/bin/cat flag"); return 0; } argv[1]은 20bytes의 값을 가져야 한다. hashcode가 check_password를 통해 ..
[Pwnable.kr] bof
·
Hacking/System
문제 주어진 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; } 취약점 분석 if(key == 0xcafebabe){ system("/bin/sh"); } func() 함수에서 key 값이 0xcafebabe이면 쉘을 출력한다. func(0xdeadbeef); main에서 실..