Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
hashes — Hash magici – "collisioni" di hash PHP | Kitploit
Strumenti/GitHubGitHub/spaze/hashes
Analisi delle VulnerabilitàAnalisi HashSicurezza WebCrittografiaApprendimento e FormazioneRisorse Curate
GitHubspaze/hashes

hashes

Hash magici – "collisioni" di hash PHP

Vedi Repository
835103501 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Hash magici – "collisioni" di hash PHP

Registrati con password 1 e poi accedi con password 2. Se riesci ad accedere, l'archiviazione usa l'algoritmo specificato per calcolare l'hash della password e PHP usa == per confrontarle (per MD5, SHA-1 e plaintext).

MD5, SHA-1, SHA-224, SHA-256 e altri

Per MD5, SHA-1 e la famiglia SHA-2, usa il trucco noto da tempo (in realtà è una funzionalità documentata, vedi tabelle di confronto dei tipi PHP e numeri a virgola mobile) per cui in PHP , lo usa semplicemente per scopi . Qualsiasi password a qualsiasi altra password della lista. Questo è un trucco diverso dalle , basta notare la differenza tra .

Scarica lo strumento
'0e1' == '00e2' == '0'
pratici
corrisponde
stringhe intere che traboccano in numeri a virgola mobile
queste due righe

Questi sono tutti gli algoritmi con hash magici:

  • 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

Per citare @0xb0bb, "ci sono altre applicazioni per gli hash magici oltre al confronto delle password (come i livelli di cache o i dati derivati dall'output di una funzione di hash) in cui questi algoritmi noti come insicuri, meno conosciuti e pseudo-hash possono essere trovati più facilmente."

Plaintext

Per plaintext, usa vari trucchi di conversione. La prima password corrisponderà solo alla seconda. I trucchi sono raggruppati per versioni PHP che li consentono.

bcrypt

bcrypt tronca le password a una lunghezza massima di 72 caratteri. Le password corrispondono se i primi 72 caratteri di entrambe le password coincidono.

descrypt

descrypt (crypt DES UNIX tradizionale) tronca le password a una lunghezza massima di 8 caratteri. Le password corrispondono anche se i primi 8 caratteri di entrambe le password coincidono, vedi la sezione "General cross-check".

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

Se usi una password più lunga di 64 byte e la sottoponi a hash con PBKDF2-HMAC-SHA1, viene prima pre-hashata con SHA1, quindi PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2) perché sha1(password1) === bin2hex(password2). Un pre-hashing simile viene applicato in caso di PBKDF2-HMAC-SHA224 e PBKDF2-HMAC-SHA256.

Tiger/192,3

Al momento c'è solo un hash magico in ciascuno grazie a Norbert Tihanyi, si spera che in futuro ne vengano aggiunti altri.

Conclusione

Usa === quando confronti qualsiasi cosa* in PHP, non ==. E usa password_hash() e password_verify() per l'hashing delle password in PHP, non usare MD5 o SHA-1. *Usa hash_equals() quando confronti gli hash.

Storia

Tutto è iniziato con questo tweet, ho generato QNKCDZO e 240610708 a febbraio 2014 e da allora si è diffuso in tutta la rete. Basta cercarlo su Google.

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

Come calcolare i tuoi hash magici

Nel 2014 ho usato il mio portatile, qualche ciclo for (o foreach?), molti cicli di CPU e una ventola esterna ma oggi puoi/dovresti usare una GPU e un hashcat modificato per farlo. Vedi questo articolo di Carl Löndahl e 0xb0bb.

Chick3nman e soci stanno anche lavorando alla loro versione di hashcat, restate sintonizzati.

Collisioni reali

MD5

Se ti serve una collisione reale alfanumerica, ecco una collisione MD5 alfanumerica di 72 byte con differenza di 1 byte, addirittura 1 bit, di Marc Stevens:

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

Nota che se ti registri con la prima password e accedi con la seconda, potrebbe comunque significare che il sito usa bcrypt(md5($password)), non solo md5($password). Questo avvolgimento dell'hash viene a volte usato quando si aggiorna l'hashing delle password ma dovrebbe essere usato solo temporaneamente.

Vedi il Progetto HashClash di Marc se sei interessato a queste collisioni reali o se vuoi crearne di tue.

LM

Collisioni reali di hash LM di @solardiz (#35, grazie!):

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

Vedi il tweet per sapere come generarne altri.