← Volver al listado de tecnologías

Bandit Nivel 12→13 - Hexdump y Compresión Múltiple

Por: SiempreListo
overthewirebandithexdumpgzipbzip2tarnivel-13

Bandit Nivel 12→13 - Hexdump y Compresión Múltiple

Objetivo

data.txt es un hexdump de un archivo que ha sido comprimido repetidamente. Debes revertir el hexdump y descomprimir hasta encontrar la contraseña.

Preparación

Trabaja en un directorio temporal:

mkdir /tmp/midir
cp data.txt /tmp/midir/
cd /tmp/midir

Teoría: Hexdump

Un hexdump es una representación hexadecimal de datos binarios.

00000000  48 65 6c 6c 6f 0a        |Hello.|
│         │                        │
│         │                        └── ASCII
│         └── Bytes en hexadecimal
└── Offset

Revertir Hexdump

xxd -r archivo.hex > archivo.bin

Teoría: Formatos de Compresión

Identificar el formato

file archivo
FormatoIdentificaciónExtensión
gzipgzip compressed data.gz
bzip2bzip2 compressed data.bz2
tarPOSIX tar archive.tar
xzXZ compressed data.xz

Descomprimir cada formato

FormatoComando
gzipgzip -d archivo.gz o gunzip archivo.gz
bzip2bzip2 -d archivo.bz2 o bunzip2 archivo.bz2
tartar -xf archivo.tar
xzxz -d archivo.xz

Solución Paso a Paso

Paso 1: Revertir hexdump

xxd -r data.txt > data.bin
file data.bin

Paso 2: Ciclo de descompresión

Repite estos pasos según el tipo detectado:

# Si es gzip
mv data.bin data.gz
gzip -d data.gz
file data

# Si es bzip2
mv data.bin data.bz2
bzip2 -d data.bz2
file data

# Si es tar
mv data.bin data.tar
tar -xf data.tar
ls
file *

Proceso típico

Este nivel requiere ~8 descompresiones anidadas. Ejemplo:

xxd -r data.txt > f1
file f1          # gzip
mv f1 f1.gz && gunzip f1.gz
file f1          # bzip2
mv f1 f1.bz2 && bunzip2 f1.bz2
file f1          # gzip
mv f1 f1.gz && gunzip f1.gz
file f1          # tar
mv f1 f1.tar && tar xf f1.tar
# ... continúa hasta obtener ASCII text

Script Automatizado

#!/bin/bash
while true; do
    TYPE=$(file -b data* | head -1)
    case "$TYPE" in
        *gzip*)
            mv data* data.gz
            gunzip data.gz
            ;;
        *bzip2*)
            mv data* data.bz2
            bunzip2 data.bz2
            ;;
        *tar*)
            tar -xf data*
            rm data.tar 2>/dev/null
            ;;
        *ASCII*)
            cat data*
            break
            ;;
    esac
done

Comandos de Compresión Resumidos

Accióngzipbzip2xz
Comprimirgzip fbzip2 fxz f
Descomprimirgzip -d f.gzbzip2 -d f.bz2xz -d f.xz
Ver contenidozcat f.gzbzcat f.bz2xzcat f.xz
Mantener originalgzip -k fbzip2 -k fxz -k f

Magic Numbers

Los primeros bytes identifican el formato:

FormatoMagic Bytes (hex)
gzip1f 8b
bzip242 5a 68 (BZh)
tar75 73 74 61 72 (ustar)
xzfd 37 7a 58 5a
xxd archivo | head -1

Comandos Aprendidos

ComandoDescripción
xxd -rRevertir hexdump
gzip -dDescomprimir gzip
bzip2 -dDescomprimir bzip2
tar -xfExtraer tar
fileIdentificar tipo

Conexión al Siguiente Nivel

ssh [email protected] -p 2220