Um Toque de Base64: Lendo uma Flag Embaralhada
O desafio
Alguém embaralhou um flag para que ele não chamasse atenção num arquivo. É apenas uma camada de base64, não um cadeado. Toque no botão de decodificação certo para lê-lo, depois envie o flag.
O que você vai aprender
- Reconhecer base64 a olho nu, especialmente o preenchimento = no final de uma string
- Decodificar uma única camada de base64 com um botão e ler o resultado
- Entender que embaralhar um texto não é o mesmo que protegê-lo
- Perceber que a codificação pode ser revertida por qualquer pessoa, sem chave ou senha
- Descartar outros botões de decodificação verificando se o formato deles sequer se encaixa na string
Habilidades testadas
Pré-requisitos
- Facilidade para ler trechos curtos de texto simples
- A ideia de que o mesmo texto pode ser escrito de mais de uma forma
Como funciona
base64 é uma forma de escrever qualquer dado usando apenas um conjunto pequeno de letras comuns, dígitos e alguns símbolos. Ele existe para que bytes possam passar com segurança por lugares que só esperam texto comum, como o corpo de um email, uma URL ou um arquivo de configuração. É completamente público e reversível: existe uma tabela acordada que mapeia cada bloco de volta aos seus bytes originais, então qualquer pessoa pode transformar o base64 de volta no que ele era, sem nenhum segredo envolvido.
Esse é o ponto central para a segurança. Como não há chave nenhuma, o base64 não esconde nada. Um valor escrito em base64 está, na prática, à vista de todos, basta apertar o botão certo. As pessoas às vezes embaralham um valor com base64 e sentem que ele agora está seguro, mas essa sensação é falsa. Criptografar algo significa que não é possível lê-lo sem uma chave secreta; codificar algo apenas muda a forma como é escrito.
Normalmente é possível identificar base64 a olho nu. Ele usa letras maiúsculas e minúsculas, dígitos e costuma terminar com um ou dois sinais de =, que são o preenchimento que o codificador adiciona para que o tamanho fique par. A string deste hack termina com um único =, o que é um forte indício de que a camada externa é base64. Os outros botões de decodificação (hex, URL, inverter) esperam formatos diferentes de entrada, então não se aplicam aqui.
Erros comuns
- Pensar que a flag está protegida. Um valor com aparência embaralhada não é um valor trancado. Sem nenhuma chave envolvida, o base64 não oferece nenhum sigilo.
- Tentar botões ao acaso. Cada decodificador espera um formato específico de entrada. O
=no final indica base64, então não há necessidade de tentar os outros primeiro. - Decodificar duas vezes. Decodificar em base64 a flag que já está legível uma segunda vez a embaralha de novo. Decodifique uma vez, leia a flag e pare.
- Enviar apenas o texto interno. A flag inclui todo o wrapper HDNA e as chaves, então envie tudo exatamente como aparece.
Como se proteger
A lição para quem constrói sistemas é nunca depender de codificação para manter algo privado. Se um valor é sensível, ele precisa ser protegido com criptografia real, que exige uma chave secreta gerenciada, ou então não deve ser armazenado ou registrado em log de forma alguma. base64 em um arquivo, um cookie ou uma URL significa "este é um formato de transporte", não "isto está protegido".
- Mantenha segredos como tokens, senhas e dados pessoais totalmente fora de logs e URLs.
- Use criptografia adequada com uma chave gerenciada quando os dados realmente precisarem permanecer confidenciais.
- Trate qualquer camada de base64, hex ou URL que encontrar como cosmética e decodifique-a para confirmar que nada sensível está a um clique de distância do texto simples.
- Revise seus próprios arquivos e respostas decodificando todo valor codificado que encontrar.