type-juggling
Использует уязвимости приведения типов PHP и слабое сравнение (==) для обхода аутентификации, проверок HMAC или токенов. Применяется, когда в коде (часто legacy или CTF) используются нестрогие типы, числовая коерсия или сравнение хешей.
AIyaklang
official
Разработка
★ 2.4k
Что делает навык
Skill анализирует уязвимости приведения типов PHP и слабое сравнение (==) для обхода аутентификации, проверок HMAC или токенов. Он применяется, когда в коде используются нестрогие типы, числовая коерсия или сравнение хешей вместо строгих методов.
Когда применять
- Обход логики логина, где пароли или токены сравниваются через == или md5() == md5().
- Эксплуатация магических хешей (начинающихся с 0e и состоящих только из цифр) для совпадения при нестрогом сравнении.
- Обход проверок HMAC, если результат сравнивается нестрогим образом с числом 0 или строкой "0".
- Использование особенностей strcmp с массивами или json_decode для получения NULL или true.
Как работает
- Определите тип сравнения в коде: если используется == или strcmp, а не === или hash_equals, переходите к анализу.
- Проверьте версию PHP (5.x/7.x против 8.0+), так как поведение приведения типов (например, 'php' == 0) различается.
- Для хешей ищите совпадения магических хешей (0e...), где обе стороны интерпретируются как 0.0.
- Для HMAC подберите входные данные (например, timestamp), дающие хеш, соответствующий паттерну 0e[0-9]+.
- Используйте массивы или специальные значения (true, []) для вызова NULL при сравнении, если код не проверяет типы строго.
Примеры запросов агенту
Проверь, можно ли обойти проверку пароля, используя магический хеш MD5 в условии с оператором ==.
Найди уязвимость в коде, где HMAC сравнивается с нулем через нестрогое сравнение, и предложи payload.
Проанализируй функцию strcmp в коде на предмет возможности передачи массива для получения NULL.
Что понадобится
- Доступ к исходному коду или возможность локального воспроизведения поведения PHP (CLI).
- Знание версии PHP на целевом сервере для корректного выбора payload.
- Инструменты для статического анализа кода (поиск ==, != на криптографических выходах).
Описание составлено по SKILL.md навыка, сверено 07.10.2026.
Как подключить
1Скачать навык
# возьмите папку навыка «type-juggling» из репозитория:
# https://github.com/yaklang/hack-skills
2Положить папку с
SKILL.md к навыкам ассистента# положите папку навыка туда, где ассистент ищет skills:
cp -r type-juggling/ ~/.claude/skills/type-juggling/
Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.