system()·Command injection 단계별 흐름 사용자 입력이 system()에 도달하면 왜 데이터가 shell 명령이 될까요? Attacker-controlled string이 application에 들어옵니다. → 프로그램이 고정 명령과 입력을 하나의 command string으로 연결합니다. → system()이 문자열 전체를 shell parser에 전달합니다. → Semicolon·substitution·redirection 같은 문법이 입력 일부를 새 명령으로 해석하게 합니다. → 프로그램 권한으로 arbitrary command execution이 발생할 수 있습니다. → 근본 방어는 shell을 제거하고 고정 executable과 분리된 argument API를 사용하는 것입니다. 사용자 입력이 system()에 도달하면 왜 데이터가 shell 명령이될까요? 화살표를 왼쪽에서 오른쪽으로 따라가며 입력·처리·결과를 확인하세요. 1 Attacker-controlledstring이application에들어옵니다. 2 프로그램이 고정 명령과입력을 하나의commandstring으로연결합니다. 3 system()이 문자열전체를 shellparser에전달합니다. 4 Semicolon·substitution·redirection같은 문법이 입력 일부를새 명령으로 해석하게합니다. 5 프로그램 권한으로arbitrarycommandexecution이발생할 수 있습니다. 6 근본 방어는 shell을제거하고 고정executable과분리된 argumentAPI를 사용하는것입니다. 시험 읽기 순서 등장 주체 또는 입력 → 처리 규칙 → 보안 효과 → 조건과 한계