Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
hashes — Волшебные хэши – PHP-хэш «коллизии» | Kitploit
Инструменты/GitHubGitHub/spaze/hashes
Анализ уязвимостейАнализ хэшейВеб-безопасностьКриптографияОбучение и ОбразованиеПодобранные Ресурсы
GitHubspaze/hashes

hashes

Волшебные хэши – PHP-хэш «коллизии»

Репозиторий
835103671 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Magic hashes — «коллизии» хешей PHP

Зарегистрируйтесь с паролем 1, а затем войдите с паролем 2. Если вы вошли, значит, хранилище использует указанный алгоритм для хеширования пароля, а PHP сравнивает их с помощью == (для MD5, SHA-1 и обычного текста).

MD5, SHA-1, SHA-224, SHA-256 и другие

Для MD5, SHA-1 и семейства SHA-2 используется давно известный трюк (на самом деле это документированная особенность, см. Таблицы сравнения типов PHP и Числа с плавающей запятой): для PHP '0e1' == '00e2' == '0', просто применяется это в практических целях. Любой пароль совпадает с любым другим паролем из списка. Это иной трюк, нежели целочисленные строки, переполняющиеся в числа с плавающей запятой, просто посмотрите на разницу между этими двумя строками.

Это все алгоритмы с magic-хешами:

  • 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-хешей есть и другие применения, помимо сравнения паролей (например, слои кэширования или данные, производные от вывода хеш-функции), где эти известные небезопасные, малоизвестные и псевдохеш-алгоритмы можно встретить чаще».

Обычный текст

Для обычного текста используются различные трюки с преобразованием. Первый пароль будет совпадать только со вторым. Трюки сгруппированы по версиям PHP, в которых они работают.

bcrypt

bcrypt усекает пароли до максимальной длины 72 символов. Пароли совпадают, если первые 72 символа обоих паролей совпадают.

descrypt

descrypt (традиционный UNIX DES crypt) усекает пароли до максимальной длины 8 символов. Пароли также совпадают, если первые 8 символов обоих паролей совпадают, см. раздел «Общая перекрёстная проверка».

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

Если вы используете пароль длиннее 64 байт и хешируете его с помощью PBKDF2-HMAC-SHA1, он сначала предварительно хешируется с помощью SHA1, поэтому PBKDF2-HMAC-SHA1(password1) === PBKDF2-HMAC-SHA1(password2), потому что sha1(password1) === bin2hex(password2). Аналогичное предварительное хеширование применяется для PBKDF2-HMAC-SHA224 и PBKDF2-HMAC-SHA256.

Tiger/192,3

Сейчас в каждом из них есть лишь один magic-хеш благодаря Norbert Tihanyi, в будущем, надеюсь, их добавится больше.

Заключение

Используйте === при сравнении чего-либо* в PHP, а не ==. И используйте password_hash() и password_verify() для хеширования паролей в PHP, не используйте MD5 или SHA-1. *Используйте hash_equals() при сравнении хешей.

История

Всё началось с этого твита. Я сгенерировал QNKCDZO и 240610708 в феврале 2014 года, и с тех пор это распространилось по всему интернету. Просто загуглите.

Скачать инструмент