Daddy told me about cool MD5 hash collision today.
Al parecer ahora nos pide que hagamos una comparativa con 0x21DD09EC.
El problema es, ¿cómo comparamos 0x21DD09EC cuando el check password solo admite los primeros 5 bytes y los compara, aqupi viene la parte duuhhh!!! de esto, habrá que hacer matematicas.
Bueno, primero vamos a dividir la cantidad en decimlaes de 0x21DD09EC entre 5 que son la cantidad maxima que nos deja leer... de 0 a 4 que serían 5, por si se preguntaban porque 5 si el for es "i<5" -> "0<5".
con la calculadora serían 568134124
568134124 / 5 = 113626824.8
Ya que lo dividimos nos damos cuenta que no es un entero, así que tendremos que usar un extra para completar los 5, en realidad es como si ocuparamos 20 y medio bytes, así que debemos completarlo, usando uno más y alineamos todo.
le quitamos el decimal y convertimos en hex = 113626824 -> 6C5CEC8
listo, tenemos el primer resultado 6C5CEC8 pero falta completar el 5 así que sumamos 4 a 6C5CEC8 y sería 6C5CEC8 + 4 = 6C5CECC
ahora veamos si funciona, recuerda en little endian...
./col $(python -c 'print "\xc8\xce\xc5\x06"*4 + "\xcc\xce\xc5\x06"')
daddy! I just managed to create a hash collision :)
Listo.