c1b3rwall / module_3

Files from module_3
13 stars 14 forks source link

Ejercicio 4 #2

Open jfzazo opened 3 years ago

jfzazo commented 3 years ago

SHA256 tiene un bloque de 64 bytes. Ahora bien, la clave que se desea cifrar tiene una longitud superior a 64B.

Entonces, por definición del algoritmo (https://mathiasbynens.be/notes/pbkdf2-hmac) se tiene que:

PBKDF2_HMAC_SHA256(secreto_original) == PBKDF2_HMAC_SHA256(HEX_TO_STRING(SHA256(secreto_original)))

Pues calculemos dicho hash SHA256,

import hashlib

cadena=b'https://www.ecteg.eu/c1b3rwall-academy-es/calculate-the-correct-flag/'
hashlib.sha256(cadena).digest()

Y verifiquémoslo en el programa de ejemplo:

>>> print('PBKDF-HMAC-SHA256:')
PBKDF-HMAC-SHA256:
>>> h1 = pbkdf2sha256hex(b'https://www.ecteg.eu/c1b3rwall-academy-es/calculate-the-correct-flag/', b'c1b3rwall', 1000000)
>>> respuesta=hashlib.sha256(b'https://www.ecteg.eu/c1b3rwall-academy-es/calculate-the-correct-flag/').digest()
>>> h2 = pbkdf2sha256hex(respuesta, b'c1b3rwall', 1000000)
>>> h1==h2
True
ch4m17ux commented 3 years ago

Hola

Podeis ayudarme? He seguido tus sabios consejos y he logrado ver la cadena de texto. Pero al meterla en las respuestas me pone error y me pone que la respuesta es una cadena mucho mas larga y distinta, pero al probar esa en el programa pone una que no coincide.

Me he saltado algo?

Phyambre commented 3 years ago

Me pasa lo mismo que a chamitux:

Leemos este artículo, https://mathiasbynens.be/notes/pbkdf2-hmac y razonamos que si las colisiones pasando la cadena a hexadecimal ocurren para SHA-1, probablemente también ocurran para SHA-256. Entonces, tomamos la cadena y la pasamos a hexadecimal con https://emn178.github.io/online-tools/sha256.html El resultado es: b13bbf0ea3faeb0b3453d7deb0fb446201aa68b13575b30f2317e6a1dd859050 Ahora, metemos las marcas de número hexadecimal, resultando: \xb1\x3b\xbf\x0e\xa3\xfa\xeb\x0b\x34\x53\xd7\xde\xb0\xfb\x44\x62\x01\xaa\x68\xb1\x35\x75\xb3\x0f\x23\x17\xe6\xa1\xdd\x85\x90\x50 Modificamos la línea del script convenientemente:

h2 = pbkdf2sha256hex(b'\xb1\x3b\xbf\x0e\xa3\xfa\xeb\x0b\x34\x53\xd7\xde\xb0\xfb\x44\x62\x01\xaa\x68\xb1\x35\x75\xb3\x0f\x23\x17\xe6\xa1\xdd\x85\x90\x50', b'c1b3rwall', 1000000)

Ejecutamos y voilà:

C1b3rwall Academy 2020

PBKDF-HMAC-SHA1: 2d9a0911685c8061caabfd248677681adae1e306 2d9a0911685c8061caabfd248677681adae1e306 PBKDF-HMAC-SHA256: d45cfc72d1bce2b4055937d0707d33114a75751c27db8452c68064861b9b5831 d45cfc72d1bce2b4055937d0707d33114a75751c27db8452c68064861b9b5831 PBKDF-HMAC-SHA1: 6396253cb44505ba44706d8471483ff23356173c 6396253cb44505ba44706d8471483ff23356173c PBKDF-HMAC-SHA256: 9c6ee91a5589a3b3d9bfb73b62b6a07e713f1eb1a0f9a48694a5ddf3956b87cb --->9c6ee91a5589a3b3d9bfb73b62b6a07e713f1eb1a0f9a48694a5ddf3956b87cb<--- ------- FLAG: ------- Your goal is calculate the value that collides the message. Please input it module3{b'value'}

Sin embargo el flag module3{b'\xb1\x3b\xbf\x0e\xa3\xfa\xeb\x0b\x34\x53\xd7\xde\xb0\xfb\x44\x62\x01\xaa\x68\xb1\x35\x75\xb3\x0f\x23\x17\xe6\xa1\xdd\x85\x90\x50'} falla.

ricardoh34 commented 3 years ago

La aplicación da los dos hashes iguales, pero lo mejor es que se supone que es codigo hexadecimal y la solución que ellos dan contiene una n y una U mayúscula, además de algun otro signo raro. No es, por tanto hexadecimal.

ricardoh34 commented 3 years ago

No sé si alguien ha encontrado otra solución? Por si nos hemos equivocado, estaría bien que alguien más comentara su opinión, gracias!

ch4m17ux commented 3 years ago

Hola, @ricardoh34

Ya nos han dado respuesta desde la organización, y nuestra respuesta es la buena. Asi que, hemos llegado a la solucion aunque la de valida la plataforma.

Un saludo