By HackBUAZ Team
1.- Recibimos un archivo con texto codificado en lo que parece ser Base64.
2.- Al usar “base64 -d cipher.txt > decipher” obtenemos un archivo con datos binarios.
Por el nombre del reto, asumimos que utiliza un cifrado de tipo XOR.
3.- Creamos un simple script para poder descifrar XOR.
Asumimos que la flag inicia con el clásico “flag{[…]”
Tomando en cuenta que se trata de una carta a Santa Claus hecha por un niño, es posible que esta comience por un “Querido Santa:” o “Querido Santa Claus:”. Aunado a que XOR tiene propiedad de autoinversa, si utilizamos el texto plano sobre el texto cifrado, lo que obtendremos será la llave de cifrado.
4.- Probamos con posibles inicios de carta (“Known Plaintext Attack”), usando la propiedad de autoinversa.
6.- Probamos agregando caracteres en forma de “padding” para poder adivinar la longitud de la llave.
Fue hasta el 6° intento que comenzamos a ver resultados congruentes. Con 5 caracteres, seguía habiendo basura, y con 7 seguía habiendo basura. Podemos asumir que la flag entonces está compuesta de 28 caracteres, faltando 6 caracteres para poder completarla.
¿cripto , crypto, Cripto, Crypto?
1.- Recibimos un archivo con texto codificado en lo que parece ser Base64.
2.- Al usar “base64 -d cipher.txt > decipher” obtenemos un archivo con datos binarios.
Por el nombre del reto, asumimos que utiliza un cifrado de tipo XOR.
3.- Creamos un simple script para poder descifrar XOR.
Asumimos que la flag inicia con el clásico “flag{[…]”
Y obtenemos de resultado basura, en su mayoría, pero algo muy interesante al inicio del descifrado:
“Queri” figura al inicio, 5 caracteres, al igual que lo que tenemos de flag.
Tomando en cuenta que se trata de una carta a Santa Claus hecha por un niño, es posible que esta comience por un “Querido Santa:” o “Querido Santa Claus:”. Aunado a que XOR tiene propiedad de autoinversa, si utilizamos el texto plano sobre el texto cifrado, lo que obtendremos será la llave de cifrado.
4.- Probamos con posibles inicios de carta (“Known Plaintext Attack”), usando la propiedad de autoinversa.
Resultado: Un posible fragmento de la flag.
5.- Reintentamos con otro posible inicio.
Resultado:
Hasta ahora la flag comienza con “flag{XOR_es_el_101_d_”. Por la llave que abre, podemos asumir que en algún momento tiene una llave que cierra, y dentro de ese último guión bajo hasta esa llave hay otro caracteres.
6.- Probamos agregando caracteres en forma de “padding” para poder adivinar la longitud de la llave.
Fue hasta el 6° intento que comenzamos a ver resultados congruentes. Con 5 caracteres, seguía habiendo basura, y con 7 seguía habiendo basura. Podemos asumir que la flag entonces está compuesta de 28 caracteres, faltando 6 caracteres para poder completarla.
7.- Intentamos buscar palabras de 6 letras.
¿cripto , crypto, Cripto, Crypto?
Casi, pero al parecer hay dos caracteres que fallan aún.
Descifradaaaa!!!
Texto plano de la carta:
Gracias a todos ustedes por compartir la forma de resolver los retos, sin duda es la mejor forma para orientar a los que iniciamos en esto de CTF. Nos dan mucha "luz" en cuanto a saber que cosas estudiar.
ReplyDelete