Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
hashes — Magic hashes – « collisions » de hachage PHP | Kitploit
Outils/GitHubGitHub/spaze/hashes
Analyse des VulnérabilitésAnalyse de HachageSécurité WebCryptographieApprentissage et ÉducationRessources Organisées
GitHubspaze/hashes

hashes

Magic hashes – « collisions » de hachage PHP

Voir le dépôt
83510350il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Hashes magiques – « collisions » de hachage PHP

Inscrivez-vous avec mot de passe 1 puis connectez-vous avec mot de passe 2. Si vous y arrivez, alors le stockage utilise l'algorithme spécifié pour hacher le mot de passe et PHP utilise == pour les comparer (pour MD5, SHA-1, et le texte en clair).

MD5, SHA-1, SHA-224, SHA-256 et autres

Pour MD5, SHA-1 et la famille SHA-2, cela utilise l'astuce bien connue (c'est en réalité une fonctionnalité documentée, voir et ) selon laquelle pour PHP , simplement utilisée à des fins . Tout mot de passe à n'importe quel autre mot de passe de la liste. C'est une astuce différente des , il suffit de repérer la différence entre .

Télécharger l’outil
tables de comparaison de types PHP
nombres à virgule flottante
'0e1' == '00e2' == '0'
pratiques
correspond
chaînes intégrales débordant en nombres à virgule flottante
ces deux lignes

Voici tous les algorithmes avec des hashes magiques :

  • 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

Pour citer @0xb0bb, « il existe d'autres applications pour les hashes magiques en dehors des comparaisons de mots de passe (comme les couches de cache ou les données dérivées de la sortie d'une fonction de hachage) où ces algorithmes connus comme non sécurisés, moins connus et pseudo-hash peuvent être trouvés plus facilement. »

Plaintext

Pour plaintext, cela utilise diverses astuces de conversion. Le premier mot de passe correspondra uniquement au second. Les astuces sont regroupées par versions de PHP les autorisant.

bcrypt

bcrypt tronque les mots de passe à une longueur maximale de 72 caractères. Les mots de passe correspondent si les 72 premiers caractères des deux mots de passe correspondent.

descrypt

descrypt (crypt DES UNIX traditionnel) tronque les mots de passe à une longueur maximale de 8 caractères. Les mots de passe correspondent également si les 8 premiers caractères des deux mots de passe correspondent, voir la section « General cross-check ».

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

Si vous utilisez un mot de passe de plus de 64 octets et le hachez avec PBKDF2-HMAC-SHA1, il est d'abord pré-haché avec SHA1, donc PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2) parce que sha1(password1) === bin2hex(password2). Un pré-hachage similaire est appliqué dans le cas de PBKDF2-HMAC-SHA224 et PBKDF2-HMAC-SHA256.

Tiger/192,3

Pour l'instant, il n'y a qu'un seul hash magique dans chacun grâce à Norbert Tihanyi, on espère que d'autres seront ajoutés à l'avenir.

Conclusion

Utilisez === pour comparer quoi que ce soit* en PHP, pas ==. Et utilisez password_hash() et password_verify() pour le hachage des mots de passe en PHP, n'utilisez pas MD5 ou SHA-1. *Utilisez hash_equals() pour comparer les hashes.

Historique

Tout a commencé avec ce tweet, j'ai généré QNKCDZO et 240610708 en février 2014 et cela s'est depuis répandu partout sur les intertubes. Il suffit de rechercher sur Google.

  • MD5 : Tweet, code, contributions de roycewilliams, Norbert Tihanyi, ethernetlord, 0xb0bb, myst404
  • MD5-double : code, contributions de TheMostKnown
  • SHA-1 : Tweet, code, contributions de roycewilliams, 0xb0bb, matlink, myst404, Maxim Masiutin
  • Plaintext : Tweet, code
  • bcrypt : code
  • PBKDF2-HMAC-SHA1 par Christian "CodesInChaos" Winnerlein, comme expliqué par Mathias Bynens, code
  • PBKDF2-HMAC-SHA224 par Norbert Tihanyi, code
  • PBKDF2-HMAC-SHA256 par Jens 'atom' Steube, code
  • Tiger/192,3 par Norbert Tihanyi
  • SHA-224 par Norbert Tihanyi, hops, 0xb0bb, myst404, Maxim Masiutin
  • SHA-256 par 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 par 0xb0bb
  • descrypt par James M. Hall, hops
  • PHOTON-80/20/16, PHOTON-128/16/16, PHOTON-160/36/36 par Norbert Tihanyi & Bertalan Borsos
  • u-Quark-136 par Norbert Tihanyi & Bertalan Borsos
  • SPONGENT-88/80/8, SPONGENT-88/176/88, SPONGENT-128/128/8, SPONGENT-128/256/128 par Norbert Tihanyi & Bertalan Borsos
  • xxHash par moi (#27)
  • MurmurHash3 par moi (#28)

Comment calculer vos propres hashes magiques

J'ai utilisé mon ordinateur portable, quelques boucles for (ou foreach ?), beaucoup de cycles CPU et un ventilateur externe en 2014, mais aujourd'hui vous pouvez/devez utiliser un GPU et un hashcat modifié pour cela. Voir cet article de Carl Löndahl et 0xb0bb.

Chick3nman & co. travaillent également sur leur version de hashcat, restez à l'écoute.

Collisions réelles

MD5

Si vous avez besoin d'une collision réelle alphanumérique, voici une collision MD5 alphanumérique de 72 octets avec une différence d'un octet, même d'un bit, par Marc Stevens :

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

Notez que si vous vous inscrivez avec le premier mot de passe et vous connectez avec le second, cela peut toujours signifier que le site utilise bcrypt(md5($password)), pas seulement md5($password). Un tel enveloppement de hash est parfois utilisé lors de la mise à niveau du hachage des mots de passe mais il ne devrait être utilisé que temporairement.

Voir le Projet HashClash de Marc si vous êtes intéressé par ces collisions réelles ou si vous souhaitez créer les vôtres.

LM

Vraies collisions de hash LM par @solardiz (#35, merci !) :

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

Voir le tweet pour savoir comment en générer d'autres.