Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
hashes — マジックハッシュ – PHPハッシュの「衝突」 | Kitploit
ツール/GitHubGitHub/spaze/hashes
脆弱性分析ハッシュ分析ウェブセキュリティ暗号化学習と教育厳選リソース
GitHubspaze/hashes

hashes

マジックハッシュ – PHPハッシュの「衝突」

リポジトリを見る
835103501年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

マジックハッシュ – PHPハッシュの「衝突」

パスワード1 で登録し、パスワード2 でサインインしてください。ログインできた場合、そのストレージは指定されたアルゴリズムでパスワードをハッシュ化しており、PHPは == を使用してそれらを比較しています(MD5、SHA-1、平文の場合)。

MD5、SHA-1、SHA-224、SHA-256 など

MD5、SHA-1、SHA-2ファミリー の場合、古くから知られたトリック(実際には文書化された機能です。PHP型比較表 と を参照)を使用します。PHPでは となることを、 な目的で利用しているだけです。リスト内のどのパスワードも、他のどのパスワードとも します。これは トリックとは異なります。 の違いに注目してください。

浮動小数点数
'0e1' == '00e2' == '0'
実用的
一致
整数文字列が浮動小数点数にオーバーフローする
この2行

マジックハッシュを持つすべてのアルゴリズムは次のとおりです:

  • 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

@0xb0bb の言葉を引用すると、「マジックハッシュには、パスワード比較以外の用途(キャッシュ層やハッシュ関数の出力から導出されるデータなど)もあり、これらの既知の安全でないアルゴリズムや、あまり知られていないアルゴリズム、擬似ハッシュアルゴリズムは、そのような場面でより簡単に見つけることができます。」

平文

平文 の場合、さまざまな変換トリックを使用します。最初のパスワードは2番目のパスワードとのみ 一致 します。トリックは、それらを可能にするPHPバージョンごとにグループ化されています。

bcrypt

bcrypt はパスワードを最大72文字に切り詰めます。両方のパスワードの最初の72文字が一致する場合、パスワードは 一致 します。

descrypt

descrypt(従来のUNIX DES crypt)はパスワードを最大8文字に切り詰めます。両方のパスワードの最初の8文字が一致する場合も、パスワードは 一致 します。「General cross-check」セクションを参照してください。

PBKDF2-HMAC-SHA1、PBKDF2-HMAC-SHA224、PBKDF2-HMAC-SHA256

64バイトを超えるパスワードを PBKDF2-HMAC-SHA1 でハッシュ化する場合、最初にSHA1で プリハッシュ されます。そのため、sha1(password1) === bin2hex(password2) であれば PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2) が成り立ちます。同様の プリハッシュ は PBKDF2-HMAC-SHA224 と PBKDF2-HMAC-SHA256 の場合にも適用されます。

Tiger/192,3

現時点では、Norbert Tihanyi のおかげで、それぞれにマジックハッシュが1つだけあります。将来的にはさらに追加されることを願っています。

結論

PHPで何か*を比較するときは、== ではなく === を使用してください。また、PHPでのパスワードハッシュ化には password_hash() と password_verify() を使用し、MD5やSHA-1は使用しないでください。*ハッシュを比較するときは hash_equals() を使用してください。

歴史

すべてはこのツイートから始まりました。2014年2月に QNKCDZO と 240610708 を生成し、その後、インターネット中に広まりました。ググってみてください。

  • MD5:ツイート、コード、貢献者:roycewilliams、Norbert Tihanyi、ethernetlord、0xb0bb、myst404
  • MD5-double:コード、貢献者:TheMostKnown
  • SHA-1:ツイート、コード、貢献者:roycewilliams、0xb0bb、matlink、myst404、Maxim Masiutin
  • 平文:ツイート、コード
  • bcrypt:コード
  • PBKDF2-HMAC-SHA1 は Christian "CodesInChaos" Winnerlein によるもの、Mathias Bynens による解説、コード
  • PBKDF2-HMAC-SHA224 は Norbert Tihanyi によるもの、コード
  • PBKDF2-HMAC-SHA256 は Jens 'atom' Steube によるもの、コード
  • Tiger/192,3 は Norbert Tihanyi によるもの
  • SHA-224 は Norbert Tihanyi、hops、0xb0bb、myst404、Maxim Masiutin によるもの
  • SHA-256 は 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 は 0xb0bb によるもの
  • descrypt は James M. Hall、hops によるもの
  • PHOTON-80/20/16、PHOTON-128/16/16、PHOTON-160/36/36 は Norbert Tihanyi & Bertalan Borsos によるもの
  • u-Quark-136 は Norbert Tihanyi & Bertalan Borsos によるもの
  • SPONGENT-88/80/8、SPONGENT-88/176/88、SPONGENT-128/128/8、SPONGENT-128/256/128 は Norbert Tihanyi & Bertalan Borsos によるもの
  • xxHash は私によるもの (#27)
  • MurmurHash3 は私によるもの (#28)

独自のマジックハッシュを計算する方法

2014年当時はノートパソコン、いくつかの for(または foreach?)ループ、多くのCPUサイクル、そして外部ファンを使用していました。しかし現在では、そのためにGPUと改造版hashcatを使用できます(使用すべきです)。Carl Löndahl と 0xb0bb によるこの記事を参照してください。

Chick3nman とその仲間たちも、独自バージョンのhashcatに取り組んでいます。お楽しみに。

実際の衝突

MD5

実際の 英数字の衝突が必要な場合、Marc Stevens による 72バイトの英数字MD5衝突(1バイト差、しかも1ビット差)があります:

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

最初のパスワードで登録し、2番目のパスワードでログインできたとしても、そのサイトが単なる md5($password) ではなく bcrypt(md5($password)) を使用している可能性があることに注意してください。このようなハッシュのラッピングは、パスワードハッシュのアップグレードの際に使用されることがありますが、一時的にのみ使用すべきです。

これらの 実際の 衝突に興味がある場合、または独自のものを作成したい場合は、Marc のProject HashClashを参照してください。

LM

@solardiz による実際のLMハッシュ衝突(#35、ありがとうございます!):

  • LMハーフハッシュ:plaintext1 または plaintext2
  • db82323cb0693862:2275490 または 0/*LUZ@
  • 44b3b60db75c15c1:2716388 または 1}DC<XT
  • 585e239d32df1998:8351762 または $;)5D|X

さらに生成する方法はこのツイートを参照してください。

ツールをダウンロード