Escape Room Crash Course


PwnTeras.


Algo de stegno

Cuando se hace cat a un ejecutable, sale pura basura. Pero a veces el comando strings puede mostrar información útil.

El comando strings busca e imprime todos los caracteres legibles:

hacker@dojo:~$ strings /path/to/some/file

Ejecuta strings en ~/flag para encontrar la flag.

No todos los archivos son lo que dice su extensión. Un .png no siempre es una imagen.

El comando file revisa el contenido de un archivo y te dice qué tipo de archivo es en realidad:

hacker@dojo:~$ file /path/to/some/file

Para cambiarle el nombre (y la extensión) a un archivo se usa mv:

hacker@dojo:~$ mv viejo.png nuevo.txt

Ejecuta file en ~/flag.png, cámbiale la extensión a .txt y léelo para encontrar la flag.

Una imagen guarda más que pixeles. Adentro también puede haber metadatos: la cámara, la fecha, el autor, comentarios...

El comando exiftool muestra todos los metadatos de un archivo:

hacker@dojo:~$ exiftool /path/to/some/file

Ejecuta exiftool en ~/foto.png para encontrar la flag.


Nuestra herramienta magica, codecs.py

El cifrado César recorre cada letra n posiciones en el abecedario. ROT13 es solo un César con n = 13.

Esta vez no sabemos n. Pero sabemos que la flag empieza con pwn.college{, así que puedes probar desplazamientos hasta que el texto tenga sentido. Para deshacer un desplazamiento de n, usa -n:

hacker@dojo:~$ python3 /challenge/codecs.py caesar "texto" -3

Encuentra el desplazamiento correcto y descifra ~/flag para encontrar la flag.

A veces el truco es lo más simple: el texto está al revés.

codecs.py voltea un texto con rev:

hacker@dojo:~$ python3 /challenge/codecs.py rev "texto"

Voltea el contenido de ~/flag con rev para encontrar la flag.

ROT13 recorre cada letra 13 posiciones en el abecedario (a → n, b → o...). Como el abecedario tiene 26 letras, aplicarlo dos veces te regresa al texto original.

codecs.py aplica ROT13 con rot13:

hacker@dojo:~$ python3 /challenge/codecs.py rot13 "texto"

Aplica rot13 al contenido de ~/flag para encontrar la flag.

Hexadecimal escribe cada caracter como dos dígitos del 0 al 9 y de la a a la f. Por ejemplo, hola es 686f6c61.

codecs.py decodifica hexadecimal con hexd:

hacker@dojo:~$ python3 /challenge/codecs.py hexd "686f6c61"

Decodifica ~/flag con hexd para encontrar la flag.

Base64 convierte cualquier dato en texto usando solo letras, números, + y /. A veces termina en = o ==, y eso casi siempre lo delata.

Nuestra herramienta codecs.py está en /challenge/codecs.py, y decodifica Base64 con b64d:

hacker@dojo:~$ python3 /challenge/codecs.py b64d "dGV4dG8="

Para pasarle el contenido de un archivo en vez de escribirlo a mano, usa "$(cat archivo)".

Decodifica ~/flag con b64d para encontrar la flag.

XOR mezcla cada caracter del texto con un caracter de una llave. Lo bueno: si aplicas XOR otra vez con la misma llave, regresas al texto original.

~/flag está cifrada con XOR, y la llave está en ~/llave. Si haces cat ~/flag vas a ver caracteres raros, es normal.

codecs.py hace XOR con xor, pasándole el texto y la llave:

hacker@dojo:~$ python3 /challenge/codecs.py xor "texto" LLAVE

Usa xor con el contenido de ~/flag y ~/llave para encontrar la flag.


30-Day Scoreboard:

This scoreboard reflects solves for challenges in this module after the module launched in this dojo.

Rank Hacker Badges Score