pwnable.xyz / password
약간의 게싱이 필요한 듯 하다. read(0, buf, nbytes); buf[(signed int)(strlen(buf) - 1)] = 0; 한 줄을 입력받는 readline 함수는 위와 같이 생겼다. 마지막에 \n이 들어오는 것을 가정해서 만든 것인데, 입력을 fgets가 아닌 read로 받는다는 점에서 문제가 발생한다. 만약 buf의 첫 번째 글자가 NULL이라면 strlen(buf); 는 0이 되고, 해당 문장은 buf[-1] = 0; 이 되므로 OOB write를 할 수 있는 버그가 생기게 된다. printf("Password: "); readline(password, 0x20); a3 = 0LL; ptr = b64decode(flag, 0x20uLL, &a3); if ( b64cmp(ptr, ..