One of our rabbits has eaten more than necessary and now it’s about to explode. We need to know what the rabbit has eaten, could you help us? It might be a flag, for sure!
https://mega.nz/#!IlN2BLRa!zigY9gRGzZ_Muvo1ZyC0yofLVUi4azVfvwPkRStMyd0
Esta vez nos encontramos con un bmp que contiene al siguiente conejito:
Lo primero que hice, como suele ser habitual, fue lanzar binwalk contra el archivo, pero este no reconoció más cabeceras que las del bmp, así que siendo estego decidí lanzarle steghide e intentar sacar la contraseña, pero me encontré con algo curioso:
Steghide se queja de que hay una lista bastante larga de bytes de relleno que no son cero, copie las direcciones de dichos bytes en un archivo llamado bit y utilizando el siguiente script (bash en una linea ftw!) extrajé dichos bytes y los guarde en un archivo output.raw para analizarlo posteriormente:
COUNTER=0; for i in $(cat bits); do value=$(printf "%d\n" $i); dd if=CunnyCunny.bmp of=output.raw skip=$i count=1 bs=1 seek=$COUNTER;COUNTER=$[COUNTER + 1] ; done
Para los que el comando os suene a chino os explico lo que va haciendo:
- El bucle for va leyendo linea a linea la dirección en hexadecimal del archivo bits.
- Utilizo el comando printf para convertir el hexadecimal a decimal y guardarlo en la variable value.
- Utilizando dd extraigo el byte donde:
- skip: Es la posición a la que dd tiene que saltar donde se encuentra el byte a extraer.
- count: Es el número de bytes que quiero extraer, en este caso, 1.
- bs: Por seguridad especifico que quiero que dd lea de 1 byte en 1 byte.
- seek: La posición en el archivo de salida para que vaya concatenando los bytes en lugar de reescribirlos.
- Le sumo 1 al contador de posición del archivo de salida y pasa al siguiente byte.
Una vez que termina le hago un cat al archivo output.raw y ahí esta la flag:
fwhibbit{P4dding_H1d3_4w3s0m3_Th1ngs}
Solución alternativa de Narib, muchas gracias por la info crack:
Uilizar zsteg (https://github.com/zed-0xff/zsteg), una gem de ruby que a pesar de que es de hace 4 años, al menos para este reto hace su labor a la perfección.
Ejecutando el comando ‘zsteg CunnyCunny.bmp’ obtenemos lo siguiente:
scanline extradata .. file: ASCII text, with no line terminators
00000000: 66 77 68 69 62 62 69 74 7b 50 34 64 64 69 6e 67 |fwhibbit{P4dding|
00000010: 5f 48 31 64 33 5f 34 77 33 73 30 6d 33 5f 54 68 |_H1d3_4w3s0m3_Th|
00000020: 31 6e 67 73 7d 00 00 00 00 00 00 00 00 00 00 00 |1ngs}………..|
Buenas!
Otra solucion era utilizar zsteg (https://github.com/zed-0xff/zsteg), una gem de ruby que a pesar de que es de hace 4 años, al menos para este reto hace su labor a la perfeccion.
Ejecutando el comando ‘zsteg CunnyCunny.bmp’ obtenemos lo siguiente:
scanline extradata .. file: ASCII text, with no line terminators
00000000: 66 77 68 69 62 62 69 74 7b 50 34 64 64 69 6e 67 |fwhibbit{P4dding|
00000010: 5f 48 31 64 33 5f 34 77 33 73 30 6d 33 5f 54 68 |_H1d3_4w3s0m3_Th|
00000020: 31 6e 67 73 7d 00 00 00 00 00 00 00 00 00 00 00 |1ngs}………..|
Un saludo!
PD: Tu forma de resolverlo mola mucho mas y es muhco mas l33t xD
Gracias por tu solución narib!!!