Wargame,

II Wargame SecurityByDefault («keyconsole»)

En primer lugar gracias a las personas detrás de SbD por organizar este concurso y enhorabuena a los ganadores, esperamos sus write-ups ansiosos.

Este reto consistía en conocer el token al ejecutar el fichero que proporcionaba la prueba ‘keyconsole’. Al ejecutarlo mostraba el siguiente mensaje:

Decido abrir el binario con un editor hexadecimal y veo que antes de ‘Checking if …’ hay un path hacia un fichero que puede ser la resolución de la prueba: /tmp/%i_privatekey_%i con un /dev/random encargado de generar numeros aleatorios. El %i es un entero

De hecho, si ejecutamos strace ./tmp_key podemos ver que intenta abrir un fichero distinto generado con un número aleatorio al principio y al final: /tmp/0_privatekey_2

Lo ejecutamos varias veces para comprobarlo y es así, cada vez pide un fichero con el inicio y final siempre generado ‘aleatoriamente’ %i%i%i%i%i

Para generar tantas combinaciones posibles de ficheros me hago un shell script que genere todos esos ficheros para ver que pasa, el script es muy sencillo, tonto y mejorable:

LIMIT=4 k=0 for ((i=0; i<=LIMIT; i++)); do `touch /tmp/$i'_privatekey_'$i` ; for ((k=0; k<=LIMIT; k++)); do `touch /tmp/$k'_privatekey_'$i` ; done done

Finalmente lo ejecutamos y voilá!

Token: Your*environment_is-fully:compatible_you*can=play.NOW

Intentaré subir más retos en los próximos días, superé sólo ocho más.

Hasta la próxima.!