CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

php-type-juggling

PHP type juggling and magic hash attacks — exploit loose comparison (==) with 0e-prefixed hash collisions and NULL returns to bypass authentication.

Quality

74%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Critical

Do not install without reviewing

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/exploit/web/php-type-juggling/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

68%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a dense, highly actionable technique catalog with genuinely valuable reference data (verified magic hashes, working commands, a runnable exploit script). Its weaknesses are moderate redundancy in explaining the 0e mechanism and PHP version caveats, and the lack of an explicit ordered workflow with validation checkpoints for deciding which technique applies to a given target.

Suggestions

State the 0e/scientific-notation mechanism once (in the cheat sheet) and consolidate the PHP 8 version caveats into a single 'Version considerations' note, removing the duplicated Detection Notes line.

Add a short ordered workflow with a version checkpoint, e.g.: 1) fingerprint PHP version, 2) select viable technique per the cheat sheet, 3) verify bypass via redirect/Set-Cookie, 4) fall back to the next technique on failure.

Move the magic-hash tables and the find_magic_hmac.php script into a references/ bundle file, keeping SKILL.md as a lean overview that points to them.

DimensionReasoningScore

Conciseness

Mostly efficient — the magic-hash tables, curl commands, and PHP brute-force script are exactly what Claude cannot reliably reproduce from memory — but there is avoidable repetition: the 0e-as-scientific-notation mechanism is explained at the top ('a string beginning with 0e followed only by digits is treated as scientific notation and equals 0') and again in section 2, the PHP 8 caveat appears both inline ('PHP 8.0 change: abc == 0 now evaluates to false') and in Detection Notes, and 'Affects PHP 5.x–7.x broadly' duplicates the Detection Notes version guidance. This fits 'mostly efficient but includes some unnecessary explanation or could be tightened'; it is above 2 because the padding is limited to a few duplicated sentences rather than pervasive verbosity, and below 4 because the duplication is more than a single minor trim.

3 / 5

Actionability

Fully executable throughout: ready-to-fire curl commands with response-filtering greps, concrete magic-hash input/output pairs for five hash algorithms, grep patterns for source review, and a complete runnable PHP brute-force script. Specific examples cover the common cases, matching the 'fully executable; copy-paste ready' anchor; nothing reads as pseudocode or vague direction.

5 / 5

Workflow Clarity

The sections form a sensible technique catalog (comparison cheat sheet → magic hashes → NULL/strcmp/HMAC/JSON bypasses → identification → detection notes), but there is no explicit end-to-end sequence and validation checkpoints are only implicit ('Check target PHP version before assuming string-zero bypass', 'observe PHP warning in response or error logs'). This matches 'steps listed but validation gaps; sequence present but checkpoints missing or implicit' — below 4, which requires most checkpoints explicitly present, and above 2 because the sections are individually well-defined and version-gating is at least mentioned.

3 / 5

Progressive Disclosure

A single, well-sectioned file with clear headers and no nested or buried references (no references/, scripts/, or assets/ directories exist; the only external links are web resources at the end, one level deep). This fits 'good structure; most content is appropriately placed; minor organization gaps' — it does not reach 5 because at ~190 lines it exceeds the simple-skill exception, and the large magic-hash tables plus the HMAC brute-force script could live in a references file to keep SKILL.md lean.

4 / 5

Total

15

/

20

Passed

Description

70%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is specific and well-targeted to a clear niche, with strong natural trigger terms for the PHP type-juggling domain. Its main weakness is the absence of any 'Use when...' trigger clause, which caps completeness and leaves invocation guidance to the separate when_to_use metadata field.

Suggestions

Add an explicit 'Use when...' clause, e.g., 'Use when testing PHP authentication, login bypass, or when a target uses md5/sha1/strcmp comparisons in PHP 5.x-7.x.'

Fold one or two high-value trigger phrases from when_to_use (e.g., 'md5 collision', 'strcmp bypass') into the description itself.

Mention the strcmp and HMAC-cookie variants so the description reflects the full technique coverage of the body.

DimensionReasoningScore

Specificity

Quotes several concrete actions — "exploit loose comparison (==)", "0e-prefixed hash collisions", "NULL returns", "bypass authentication" — matching the anchor 'lists several specific actions; minor gaps in coverage'. It falls short of 5 because body techniques like strcmp bypass and HMAC brute-force are absent from the description; it is clearly above 3, which requires only 1-2 concrete actions.

4 / 5

Completeness

The 'what' is clear (exploit loose comparison and hash collisions to bypass authentication), but there is no 'Use when...' clause or equivalent trigger guidance, which caps completeness at 3 per the judging guidelines. It is not 4 because 'when' is fully absent rather than just under-specified, and not 2 because the 'what' is concrete and unambiguous.

3 / 5

Trigger Term Quality

Natural terms a user would say are present: "PHP type juggling", "magic hash attacks", "loose comparison", "bypass authentication" — good coverage per the anchor 'good keyword coverage; a few natural terms missing'. Not 5 because common phrasings like md5/sha1 collision, strcmp bypass, or PHP == comparison appear only in the when_to_use metadata, not the description itself; well above 3 since multiple relevant natural keywords are included.

4 / 5

Distinctiveness Conflict Risk

A clear niche — PHP loose-comparison auth bypass via type juggling — with distinct, specific triggers that are unlikely to fire for unrelated skills. No overlap risk with general web-testing or other language-specific skills, matching the anchor 'clear niche with distinct triggers; minimal conflict risk'.

5 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

PurpleAILAB/Decepticon

Path

packages/decepticon/decepticon/skills/standard/exploit/web/php-type-juggling/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.