Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/spaze/hashes
Análise de VulnerabilidadesAnálise de HashSegurança WebCriptografiaAprendizado e EducaçãoRecursos Curados
GitHubspaze/hashes

hashes

Magic hashes – "colisões" de hash do PHP

Ver Repositório
83510350há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Hashes mágicos – "colisões" de hash em PHP

Registe-se com senha 1 e depois inicie sessão com senha 2. Se conseguir entrar, então o armazenamento usa o algoritmo especificado para aplicar hash à senha e o PHP usa == para as comparar (para MD5, SHA-1 e texto simples).

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

Para MD5, SHA-1 e a família SHA-2, usa-se o truque há muito conhecido (na verdade é uma funcionalidade documentada, consulte tabelas de comparação de tipos do PHP e ) segundo o qual, em PHP, , só que é usado para fins . Qualquer senha a qualquer outra senha da lista. Isto é um truque diferente do de , basta reparar na diferença entre .

Baixar ferramenta
números de ponto flutuante
'0e1' == '00e2' == '0'
práticos
corresponde
strings integrais a transbordar para números de ponto flutuante
estas duas linhas

Estes são todos os algoritmos com 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

Citando @0xb0bb, "existem outras aplicações para hashes mágicos além da comparação de senhas (como camadas de cache ou dados derivados da saída de uma função hash) onde estes algoritmos conhecidos como inseguros, menos conhecidos e pseudo-hash podem ser encontrados mais facilmente."

Texto simples

Para texto simples, são usados vários truques de conversão. A primeira senha corresponde apenas à segunda. Os truques estão agrupados por versões do PHP que os permitem.

bcrypt

O bcrypt trunca senhas até um comprimento máximo de 72 caracteres. As senhas correspondem se os primeiros 72 caracteres de ambas as senhas coincidirem.

descrypt

O descrypt (crypt DES UNIX tradicional) trunca senhas até um comprimento máximo de 8 caracteres. As senhas também correspondem se os primeiros 8 caracteres de ambas as senhas coincidirem, consulte a secção "Verificação cruzada geral".

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

Se usar uma senha com mais de 64 bytes e aplicar hash com PBKDF2-HMAC-SHA1, ela é primeiro submetida a um pré-hash com SHA1, portanto PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2) porque sha1(password1) === bin2hex(password2). O pré-hash semelhante é aplicado no caso de PBKDF2-HMAC-SHA224 e PBKDF2-HMAC-SHA256.

Tiger/192,3

Neste momento há apenas um hash mágico em cada um graças a Norbert Tihanyi, esperemos que mais sejam adicionados no futuro.

Conclusão

Use === ao comparar qualquer coisa* em PHP, não ==. E use password_hash() e password_verify() para hash de senhas em PHP; não use MD5 ou SHA-1. *Use hash_equals() ao comparar hashes.

História

Tudo começou com este tweet. Gerei QNKCDZO e 240610708 em fevereiro de 2014 e desde então espalhou-se por toda a internet. Basta pesquisar no Google.

  • MD5: Tweet, código, contribuições de roycewilliams, Norbert Tihanyi, ethernetlord, 0xb0bb, myst404
  • MD5-double: código, contribuições de TheMostKnown
  • SHA-1: Tweet, código, contribuições de roycewilliams, 0xb0bb, matlink, myst404, Maxim Masiutin
  • Texto simples: Tweet, código
  • bcrypt: código
  • PBKDF2-HMAC-SHA1 por Christian "CodesInChaos" Winnerlein, como explicado por 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 & Bertalan Borsos
  • u-Quark-136 por Norbert Tihanyi & Bertalan Borsos
  • SPONGENT-88/80/8, SPONGENT-88/176/88, SPONGENT-128/128/8, SPONGENT-128/256/128 por Norbert Tihanyi & Bertalan Borsos
  • xxHash por mim (#27)
  • MurmurHash3 por mim (#28)

Como calcular os seus próprios hashes mágicos

Usei o meu portátil, alguns loops for (ou foreach?), muitos ciclos de CPU e uma ventoinha externa em 2014, mas hoje pode/deve usar uma GPU e um hashcat modificado para isso. Consulte este artigo de Carl Löndahl e 0xb0bb.

Chick3nman e companhia também estão a trabalhar na sua versão do hashcat, fiquem atentos.

Colisões reais

MD5

Se precisar de uma colisão real alfanumérica, aqui está uma colisão MD5 alfanumérica de 72 bytes com diferença de 1 byte, até 1 bit, por Marc Stevens:

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

Note que, se registar com a primeira senha e iniciar sessão com a segunda, isso pode ainda significar que o site usa bcrypt(md5($password)), e não apenas md5($password). Esse encapsulamento de hash é por vezes usado ao atualizar a hash de senhas, mas deve ser usado apenas temporariamente.

Consulte o Projeto HashClash do Marc se estiver interessado nestas colisões reais ou se quiser criar as suas próprias.

LM

Colisões reais de hash LM por @solardiz (#35, obrigado!):

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

Consulte o tweet para saber como gerar mais alguns.