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.!