-
pwnable.kr - blukatpwnable.kr 2023. 6. 6. 21:54
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> char flag[100]; char password[100]; char* key = "3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+"; void calc_flag(char* s){ int i; for(i=0; i<strlen(s); i++){ flag[i] = s[i] ^ key[i]; } printf("%s\n", flag); } int main(){ FILE* fp = fopen("/home/blukat/password", "r"); fgets(password, 100, fp); char buf[100]; printf("guess the password!\n"); fgets(buf, 128, stdin); if(!strcmp(password, buf)){ printf("congrats! here is your flag: "); calc_flag(password); } else{ printf("wrong guess!\n"); exit(0); } return 0; }
password 파일에서 가져온 100bytes와 사용자가 입력한 100bytes가 일치할 경우 flag를 출력한다.
? permission이 없는 경우에는 파일을 가져오지 못하는데 scp로 blukat 디렉토리 하위 파일을 모두 가져왔더니 password 파일도 있었다.
vi ./password "cat: password: Permission denied" 가 적혀있다. 대부분 cat를 이용해 파일을 읽기 때문에 이런 속임수를 준 것 같다.
flag skilled player에게는 어려운 문제라는데 어렵게 푸는 방법은 뭔지 모르겠다.
728x90'pwnable.kr' 카테고리의 다른 글
pwnable.kr - horcruxes (0) 2023.06.07 pwnable.kr - unlink (0) 2023.06.06 pwnable.kr - asm (0) 2023.05.05 pwnable.kr - memcpy (0) 2023.05.04 pwnable.kr - uaf (0) 2023.04.24