Você está escrevendo 512 bytes em um arquivo e o executa. Então o resultado poderia ser qualquer coisa que um programa com 512 bytes pudesse fazer. O que é isso depende da sua máquina. Mas 512 bytes são bastantes instruções, então basicamente tudo poderia ter acontecido como mudar a senha do root, criar arquivos aleatórios ou gerar um arquivo tar contendo o código-fonte do seu projeto.
Um cabeçalho ELF não é obrigatório. Texto ASCII simples é suficiente e será interpretado pelo shell em execução no momento (por causa da falta da linha shebang).
Um sinal maior que ( >
) redireciona a saída para um arquivo. Portanto, este byte específico já é suficiente para criar arquivos. Exemplo:
# this will create a file named abc123 in almost every shell
:>abc123
# another variant
>abc123^D
Isso demonstra que existem várias maneiras de criar arquivos usando uma pequena quantidade de bytes, o que aumenta a probabilidade de acontecer.