Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
hashes — Magic hashes – PHP 해시 '충돌' | Kitploit
도구/GitHubGitHub/spaze/hashes
Vulnerability AnalysisHash AnalysisWeb SecurityCryptographyLearning & EducationCurated Resources
GitHubspaze/hashes

hashes

Magic hashes – PHP 해시 '충돌'

저장소 보기
835103671년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Magic hashes – PHP 해시 "충돌"

password 1로 등록한 다음 password 2로 로그인해 보세요. 로그인에 성공한다면 저장소가 지정된 알고리즘으로 비밀번호를 해시하고 PHP가 ==를 사용해 비교한다는 뜻입니다(MD5, SHA-1 및 plaintext의 경우).

MD5, SHA-1, SHA-224, SHA-256 및 기타

MD5, SHA-1 및 SHA-2 계열의 경우, 오래전부터 알려진 트릭을 사용합니다(실제로는 문서화된 기능입니다. PHP 유형 비교 표 및 부동 소수점 숫자를 참조하세요). PHP에서 '0e1' == '00e2' == '0'이라는 점을 실용적인 목적으로 이용하는 것입니다. 목록에 있는 어떤 비밀번호든 다른 비밀번호와 일치합니다. 이것은 정수 문자열이 부동 소수점 숫자로 오버플로되는 트릭과는 다른 것으로, 이 두 줄의 차이를 확인해 보세요.

다음은 magic hashes가 존재하는 모든 알고리즘입니다:

  • 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의 말을 인용하자면, "magic hashes는 비밀번호 비교 외에도 다른 용도(예: 캐싱 레이어나 해시 함수 출력에서 파생된 데이터)가 있으며, 이러한 알려진 취약한 알고리즘, 덜 알려진 알고리즘, 의사 해시 알고리즘은 그런 곳에서 더 쉽게 발견할 수 있습니다."

Plaintext

plaintext의 경우 다양한 변환 트릭을 사용합니다. 첫 번째 비밀번호는 두 번째 비밀번호와만 일치합니다. 트릭은 이를 허용하는 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로 *사전 해시(pre-hash)*되므로 sha1(password1) === bin2hex(password2)인 경우 PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2)가 성립합니다. PBKDF2-HMAC-SHA224와 PBKDF2-HMAC-SHA256의 경우에도 유사한 사전 해시가 적용됩니다.

Tiger/192,3

현재로서는 Norbert Tihanyi 덕분에 각각 하나의 magic hash만 있습니다. 앞으로 더 추가되기를 바랍니다.

결론

PHP에서 무엇이든* 비교할 때는 ==가 아니라 ===를 사용하세요. 그리고 PHP에서 비밀번호 해싱에는 password_hash()와 password_verify()를 사용하고 MD5나 SHA-1은 사용하지 마세요. *해시를 비교할 때는 hash_equals()를 사용하세요.

역사

이 트윗에서 모든 것이 시작되었습니다. 2014년 2월에 QNKCDZO와 240610708을 생성했고, 그 이후로 인터넷 전체에 퍼졌습니다. 그냥 검색해 보세요.

도구 다운로드