FSB 발생 시나리오
- printf 함수에 사용자 입력을 직접 전달하는 경우:
char *user_input = get_user_input();
printf(user_input); // This is dangerous!
- sprintf와 같은 함수를 사용하여 문자열을 다른 버퍼로 복사할 때:
char buffer[100];
char *user_input = get_user_input();
sprintf(buffer, user_input); // This is dangerous!
- scanf와 같은 함수를 사용하여 사용자 입력을 변수에 저장할 때:
char buffer[100];
printf("Enter a format string: ");
scanf("%s", buffer); // This is dangerous!
char *user_input = get_user_input();
printf(user_input); // This is dangerous!
char buffer_1[100];
char *user_input = get_user_input();
sprintf(buffer, user_input); // This is dangerous!
char buffer_2[100];
printf("Enter a format string: ");
scanf("%s", buffer); // This is dangerous!