Navaja Negra 7e – Wrong file transfer

Como seguramente sabréis estos días se ha celebrado la séptima edición de Navaja Negra (https://www.navajanegra.com/) y los cabr… buenos muchachos de Ka0Labs han organizado el CTF de este año y aquí os traigo un par de writeups de las que conseguí solucionar, y si, solo un par porque menudo nivelazo de CTF, desde aquí felicitarlos por montar un CTF que ha sido divertido y a la vez un gran reto para todos.

Comencemos con una prueba de misc (aunque casi podría ser forense) del cual nos dan el siguiente enunciado:

Wrong file tranfer

75

Size always matters, gimme the flagz!!

Y un archivo pcapng, lo abrimos con wireshark y nos encontramos lo siguiente:

De un vistazo se puede ver que es una captura de USB por el protocolo y si nos fijamos en el info vemos que hay operaciones de escritura y el tipo de dispositivo SCSI lo cual nos dice que probablemente sea un disco externo o un pendrive al que se transfieren archivos.

También podemos ver que las llamadas de URB_BULK out son las únicas que contienen información así que lo primero que hice fue generar un archivo con tshark con toda esa información solamente:

tshark -r asdf.pcapng -T fields -e usb.capdata > raw.data

Ahora utilizamos xxd para convertir la información hexádecimal a bytes:

xxd -r -p  raw.data  raw.bin

Y tiramos un binwalk a ver que nos encontramos:

Vemos muchísimos Unix Path pero ese BMP del principio tiene buena pinta, lo extraemos utilizando dd:

dd if=raw.bin of=raw.bmp skip=15890 count=760592 bs=1

Y obtenemos esta imagen:

Mmmh, es curioso como parece que es solo media imágen, ¿quizás el tamaño importa como nos dijeron en el enunciado? Vamos a modificar el bmp utilizando un editor hexadecimal para cambiar el tamaño del BMP a ver que pasa.

42 4D F6 64 35 00 00 00 00 00 36 00 00 00 28 00 00 00 30 02 00 00 38 04 00 00

Esta es la cabecera del BMP de la cual nos interesa los últimos bytes que son los que especifican el tamaño del mismo, decidí quedarme con la longitud mayor dejando los bytes correspondientes de la siguiente manera:

42 4D F6 64 35 00 00 00 00 00 36 00 00 00 28 00 00 00 38 04 00 00 38 04 00 00

Guardamos y obtenemos lo siguiente:

Parece que no vamos mal, curiosamente da la impresión de que tenemos bien la cabecera y la parte final pero nos falta lo de la mitad. Quizás hayamos cortado de más al utilizar dd, vamos a quedarnos con toda la información después de la cabecera:

dd if=raw.bin of=raw.bmp skip=15890 bs=1

Y obtenemos un archivo mucho más prometedor:

Vamos a cambiar nuevamente el tamaño en la cabecera y obtenemos esto:

Y ahí podemos ver la flag: nn7e{e4sy_t0_r3c0v3r}

Aunque aquí me he ido a los pasos directos la prueba me dio muchos dolores de cabeza sobre todo porque me costo ver por qué tenía la cabeza y los pies ¡Pero no el resto! jeje

Espero os haya gustado y en cuanto pueda subiré el siguiente writeup de navajas.

Un saludo y gracias por vuestra visita!

Esta entrada fue publicada en ctf, forense, misc, navaja negra 7e, writeups. Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.