Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
hashes — Hashes mágicos – "colisiones" de hash de PHP | Kitploit
Herramientas/GitHubGitHub/spaze/hashes
Análisis de VulnerabilidadesAnálisis de HashSeguridad WebCriptografíaAprendizaje y EducaciónRecursos Curados
GitHubspaze/hashes

hashes

Hashes mágicos – "colisiones" de hash de PHP

Ver Repositorio
83510350hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Hashes mágicos – «colisiones» de hash en PHP

Regístrate con contraseña 1 y luego inicia sesión con contraseña 2. Si consigues entrar, entonces el almacenamiento usa el algoritmo especificado para aplicar hash a la contraseña y PHP usa == para compararlas (para MD5, SHA-1 y texto plano).

MD5, SHA-1, SHA-224, SHA-256 y otros

Para MD5, SHA-1 y la familia SHA-2 se usa el truco conocido desde hace tiempo (en realidad es una funcionalidad documentada; consulta y ) según el cual en PHP ; aquí solo se usa con fines . Cualquier contraseña con cualquier otra contraseña de la lista. Este es un truco distinto al de las ; basta con ver la diferencia entre .

Descargar herramienta
tablas de comparación de tipos de PHP
números de coma flotante
'0e1' == '00e2' == '0'
prácticos
coincide
cadenas integrales que se desbordan en números de coma flotante
estas dos líneas

Estos son todos los algoritmos con hashes mágicos:

  • CRC32
  • CRC32b
  • FNV-1a/32
  • FNV-1a/64
  • FNV-1/32
  • FNV-1/64
  • HAVAL-128,3
  • HAVAL-128,4
  • HAVAL-128,5
  • HAVAL-160,3
  • HAVAL-160,4
  • HAVAL-160,5
  • JOAAT
  • MD2
  • MD4
  • MD5
  • MD5-double md5(md5(password))
  • MurmurHash3_x86_32/Murmur3a
  • MurmurHash3_x86_128/Murmur3c
  • MurmurHash3_x64_128/Murmur3f
  • PHOTON-80/20/16
  • PHOTON-128/16/16
  • PHOTON-160/36/36
  • Quark u-Quark-136
  • RIPEMD-128
  • RIPEMD-160
  • SHA-1
  • SHA-224
  • SHA-256
  • SPONGENT-88/80/8
  • SPONGENT-88/176/88
  • SPONGENT-128/128/8
  • SPONGENT-128/256/128
  • Tiger/128,3
  • Tiger/128,4
  • Tiger/160,3
  • Tiger/160,4
  • Tiger/192,3
  • xxHash-XXH32
  • xxHash-XXH64
  • xxHash-XXH3_64bits
  • xxHash-XXH3_128bits

En palabras de @0xb0bb, «hay otras aplicaciones para los hashes mágicos además de la comparación de contraseñas (como capas de caché o datos derivados de la salida de una función hash) en las que estos algoritmos conocidos por ser inseguros, menos conocidos y pseudo-hash se pueden encontrar con mayor facilidad».

Texto plano

Para texto plano se usan varios trucos de conversión. La primera contraseña coincidirá únicamente con la segunda. Los trucos están agrupados por versiones de PHP que los permiten.

bcrypt

bcrypt trunca las contraseñas a una longitud máxima de 72 caracteres. Las contraseñas coinciden si los primeros 72 caracteres de ambas contraseñas coinciden.

descrypt

descrypt (crypt DES tradicional de UNIX) trunca las contraseñas a una longitud máxima de 8 caracteres. Las contraseñas también coinciden si los primeros 8 caracteres de ambas contraseñas coinciden; consulta la sección «General cross-check».

PBKDF2-HMAC-SHA1, PBKDF2-HMAC-SHA224, PBKDF2-HMAC-SHA256

Si usas una contraseña de más de 64 bytes y le aplicas hash con PBKDF2-HMAC-SHA1, primero se pre-hashea con SHA1, de modo que PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2) porque sha1(password1) === bin2hex(password2). El mismo pre-hasheo se aplica en el caso de PBKDF2-HMAC-SHA224 y PBKDF2-HMAC-SHA256.

Tiger/192,3

Por ahora solo hay un hash mágico en cada uno de ellos, gracias a Norbert Tihanyi; con suerte, se añadirán más en el futuro.

Conclusión

Usa === al comparar cualquier cosa* en PHP, no ==. Y usa password_hash() y password_verify() para el hash de contraseñas en PHP; no uses MD5 ni SHA-1. *Usa hash_equals() al comparar hashes.

Historia

Todo empezó con este tweet. Generé QNKCDZO y 240610708 en febrero de 2014 y desde entonces se ha extendido por todo internet. Solo búscalo en Google.

  • MD5: Tweet, código, contribuciones de roycewilliams, Norbert Tihanyi, ethernetlord, 0xb0bb, myst404
  • MD5-double: código, contribuciones de TheMostKnown
  • SHA-1: Tweet, código, contribuciones de roycewilliams, 0xb0bb, matlink, myst404, Maxim Masiutin
  • Plaintext: Tweet, código
  • bcrypt: código
  • PBKDF2-HMAC-SHA1 por Christian "CodesInChaos" Winnerlein, como explicó Mathias Bynens, código
  • PBKDF2-HMAC-SHA224 por Norbert Tihanyi, código
  • PBKDF2-HMAC-SHA256 por Jens 'atom' Steube, código
  • Tiger/192,3 por Norbert Tihanyi
  • SHA-224 por Norbert Tihanyi, hops, 0xb0bb, myst404, Maxim Masiutin
  • SHA-256 por Norbert Tihanyi, Chick3nman, roycewilliams, matlink
  • CRC32, CRC32b, FNV-1a/32, FNV-1a/64, FNV-1/32, FNV-1/64, HAVAL-128,3, HAVAL-128,4, HAVAL-128,5, HAVAL-160,3, HAVAL-160,4, HAVAL-160,5, JOAAT, MD2, MD4, RIPEMD-128, RIPEMD-160, Tiger/128,3, Tiger/128,4, Tiger/160,3, Tiger/160,4 por 0xb0bb
  • descrypt por James M. Hall, hops
  • PHOTON-80/20/16, PHOTON-128/16/16, PHOTON-160/36/36 por Norbert Tihanyi y Bertalan Borsos
  • u-Quark-136 por Norbert Tihanyi y Bertalan Borsos
  • SPONGENT-88/80/8, SPONGENT-88/176/88, SPONGENT-128/128/8, SPONGENT-128/256/128 por Norbert Tihanyi y Bertalan Borsos
  • xxHash por mí (#27)
  • MurmurHash3 por mí (#28)

Cómo calcular tus propios hashes mágicos

Allá por 2014 usé mi portátil, algunos bucles for (¿o foreach?), muchos ciclos de CPU y un ventilador externo, pero hoy en día puedes/debes usar una GPU y un hashcat modificado para ello. Consulta este artículo de Carl Löndahl y 0xb0bb.

Chick3nman y compañía también están trabajando en su versión de hashcat; permanece atento.

Colisiones reales

MD5

Si necesitas una colisión real alfanumérica, aquí tienes una colisión MD5 alfanumérica de 72 bytes con una diferencia de 1 byte, incluso de tan solo 1 bit, por Marc Stevens:

root@kitploit:~
md5("TEXTCOLLBYfGiJUETHQ4hAcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak")
=
md5("TEXTCOLLBYfGiJUETHQ4hEcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak")

Ten en cuenta que si te registras con la primera contraseña e inicias sesión con la segunda, podría significar que el sitio usa bcrypt(md5($password)), no solo md5($password). Este tipo de envoltura de hash se usa a veces al actualizar el hash de contraseñas, pero solo debería usarse de forma temporal.

Consulta el Proyecto HashClash de Marc si te interesan estas colisiones reales o si quieres crear las tuyas propias.

LM

Colisiones reales de hash LM por @solardiz (#35, ¡gracias!):

  • LM half-hash: plaintext1 o plaintext2
  • db82323cb0693862: 2275490 o 0/*LUZ@
  • 44b3b60db75c15c1: 2716388 o 1}DC<XT
  • 585e239d32df1998: 8351762 o $;)5D|X

Consulta el tweet para saber cómo generar más.