

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
O fragmento de código a seguir recebe o nome de um arquivo como parâmetro da linha de comando e mostra o seu conteúdo ao usuário. O script é configurado com setuid root, pois visa servir como uma ferramenta educacional para permitir que administradores de sistemas em treinamento examinem arquivos privilegiados do sistema, sem conceder-lhes a capacidade de alterá-los ou causar danos ao sistema.
int main(char* argc, char** argv) {
char cmd[CMD_MAX] = "/
strcat(cmd, argv[1]);
system(cmd);
}
Dado que o programa opera com privilégios de administrador, a função system() é igualmente executada com tais privilégios. Quando um usuário fornece um nome de arquivo padrão, a chamada funciona como esperado. Contudo, se um invasor inserir uma string como ";rm -rf /
excluir recursivamente todo o conteúdo da partição raiz, configurando um ataque do tipo Denial of Service.
excluir recursivamente todo o conteúdo da partição raiz, configurando um ataque do tipo Command Injection.
copiar recursivamente todo o conteúdo da partição raiz, configurando um ataque do tipo Direct Dynamic Code Evaluation.
copiar recursivamente todo o conteúdo da partição raiz, configurando um ataque do tipo Code Injection.
excluir recursivamente todo o conteúdo da partição raiz, configurando um ataque do tipo Man-in-the-middle.