Desfazendo o Deslocamento: Revertendo uma Flag ROT13
O desafio
Cada letra deste flag foi deslocada no alfabeto. As chaves e os sublinhados ficaram no lugar, então o formato ainda parece certo - só as letras estão erradas. Toque no decodificador que as coloca de volta, depois envie o flag.
O que você vai aprender
- Reconhecer um deslocamento de letras pelas chaves intactas e pelas letras deslocadas de uma flag
- Reverter um deslocamento ROT13 com um único botão decodificador
- Entender que um deslocamento fixo de letras não oferece sigilo real
- Perceber que girar letras não exige chave, então qualquer pessoa pode desfazer isso
- Descartar base64 e hex ao perceber que a string é composta só de letras no formato de uma flag
Habilidades testadas
Pré-requisitos
- Conhecer a ordem do alfabeto em inglês
- Familiaridade com a leitura de uma flag curta no formato NAME{some_text}
Como funciona
ROT13 é uma forma pequena e muito antiga de embaralhar texto. Ele move cada letra 13 posições ao longo do alfabeto, então A se torna N, B se torna O, e assim por diante, voltando ao início ao chegar no fim. Como o alfabeto em inglês tem 26 letras e 13 é exatamente a metade disso, aplicar ROT13 uma segunda vez traz cada letra de volta ao lugar original. É por isso que o mesmo botão embaralha e desembaralha.
O ponto importante para segurança é o que o ROT13 deixa intacto. Espaços, chaves, sublinhados e dígitos não são letras, então não se movem. Isso significa que o formato geral do texto se mantém. Em uma flag, você ainda consegue ver o prefixo, as chaves e os sublinhados em seus lugares normais, enquanto só as letras parecem erradas. Essa estrutura intacta com letras embaralhadas é a marca clássica de um deslocamento estilo César, como o ROT13.
O ROT13 não tem chave. A regra é pública e fixa, então revertê-la não exige senha nem permissão. Isso o torna uma codificação, não uma criptografia. Serve bem para esconder um spoiler ou disfarçar levemente um texto, mas não dá privacidade real a um valor. Os botões de base64 e hex do laboratório esperam formatos de entrada diferentes e só bagunçariam uma string de letras simples, então são iscas aqui.
Erros comuns
- Recorrer ao base64 primeiro. A string é composta só de letras no formato de uma flag, sem preenchimento
=, então não é base64. As letras deslocadas apontam para o ROT13. - Achar que o valor está protegido. Um deslocamento sem chave não é um cadeado. Qualquer pessoa pode reverter o ROT13 em um clique.
- Deslocar duas vezes. Tocar em ROT13 de novo reembaralha a flag que já estava legível. Aplique uma vez e pare quando as palavras estiverem legíveis normalmente.
- Enviar a versão embaralhada. Só a flag desfeita está correta, então decodifique antes de enviar.
Como se proteger
A lição para quem desenvolve é que um deslocamento de letras nunca é um controle de segurança. Se um valor é sensível, proteja-o com criptografia de verdade, que exige uma chave secreta gerenciada, ou simplesmente não o exponha. Ver ROT13 ou qualquer deslocamento fixo em torno de um valor deve ser lido como "levemente disfarçado", nunca como "protegido".
- Nunca use ROT13 ou um deslocamento de César para esconder senhas, tokens ou dados pessoais.
- Use criptografia adequada com uma chave gerenciada quando os dados precisarem permanecer confidenciais.
- Trate qualquer deslocamento ou codificação reversível que encontrar como cosmético e decodifique-o para checar o que há por baixo.
- Ao revisar seus próprios sistemas, desfaça o deslocamento e decodifique cada valor disfarçado para confirmar que nada sensível está a um clique de virar texto puro.