Objetivo del nivel 12 → 13

¡Menudo nivel! Es sin duda uno de los retos más icónicos y laboriosos de Bandit debido a la cantidad de capas que hay que deshacer.

El objetivo es encontrar la contraseña para el siguiente nivel dentro de data.txt. Este archivo contiene un volcado hexadecimal (hexdump) de un archivo binario que ha sido comprimido de forma repetida empleando múltiples formatos (una «matrioshka» digital). Una vez obtenida, se debe utilizar para iniciar sesión en el usuario bandit13.

1. Conectar

Para iniciar el reto, debes conectarte al servidor del juego mediante SSH introduciendo el siguiente comando en tu terminal (utilizando la contraseña obtenida en el nivel anterior):

bash

ssh bandit12@bandit.labs.overthewire.org -p 2220

2. Ingresar

Debido a que este proceso modificará y generará múltiples archivos, es necesario aislar el entorno creando un espacio temporal propio, revertir el volcado hexadecimal a binario y empezar el descifrado capa por capa.

Preparar el espacio de trabajo:

bash

mkdir /tmp/basura # Crear directorio
cp data.txt /tmp/basura/ # Copiar data.txt al directorio creado
cd /tmp/basura/ # Acceder al directorio

Convertir el hexdump a binario original:

bash

xxd -r data.txt > data.bin

Proceso de descompresión iterativo (Matrioshka):

  • Capa 1 (gzip): file data.bin indica que es un archivo comprimido gzip.
bash

mv data.bin data.gz
gunzip data.gz
  • Capa 2 (bzip2): file data indica que es un archivo comprimido bzip2.
bash

mv data data.bz2
bzip2 -d data.bz2
  • Capa 3 (gzip): file data indica que vuelve a ser un archivo comprimido gzip.
bash

mv data data.gz
gunzip data.gz
  • Capa 4 (tar): file data indica que es un contenedor de archivos POSIX tar.
bash

mv data data.tar
tar -xf data.tar
  • Capa 5 (tar): file data5.bin indica que se extrajo otro archivo de tipo tar.
bash

mv data5.bin data5.tar
tar -xf data5.tar
  • Capa 6 (bzip2): file data6.bin indica que se extrajo un archivo comprimido bzip2.
bash

mv data6.bin data6.bz2
bzip2 -d data6.bz2
  • Capa 7 (tar): file data6 (renombrado temporalmente a data.tar) indica que es otro tar.
bash

mv data6 data.tar
tar -xf data.tar
  • Capa 8 (gzip): file data8.bin indica el último archivo comprimido en gzip.
bash

mv data8.bin data8.gz
gunzip data8.gz

    Leer el contenido final:

    Tras realizar file data8, el sistema confirma que por fin hemos llegado a un archivo de texto plano (ASCII text). Procedemos a su lectura:

    bash

    cat data8

    Limpieza de rastro (Buenas prácticas):

    Antes de desconectarte, elimina la carpeta temporal creada para no dejar residuos en el servidor común:

    bash

    rm -rf /tmp/basura

    3. Verificación

    Al ejecutar la lectura del archivo de texto final desenvuelto, el sistema te devolverá la credencial correspondiente:

    ¡Respuesta!

    The password is:FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn.

    Para verificar que la contraseña es correcta y avanzar, conéctate al siguiente nivel usando estos datos de acceso:

    Acceso siguiente nivel

    • Usuario: bandit13
    • Contraseña: FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn

    Conceptos Clave Aprendidos

    • xxd -r: Herramienta utilizada para realizar la operación inversa de un volcado hexadecimal, reconstruyendo el archivo binario ejecutable original a partir de su representación en texto plano.

    • Formatos de compresión en Linux: Comprensión práctica de las tres herramientas de empaquetado y compresión más habituales en ecosistemas Unix: gzip (extensión .gz), bzip2 (extensión .bz2) y tar (extensión .tar).

    • mktemp -d / Carpeta /tmp: Uso del directorio global de archivos temporales del sistema para realizar tareas de ingeniería inversa sin ensuciar los directorios del usuario principal ni interferir con otros procesos del laboratorio.