leethack
ProblemsPathsLeaderboardPricing
Start free
Secure-code training

Patch real CVEs.
Prove the fix under live fire.

Leethack hands you the vulnerable function and the exact exploit suite that broke it in the wild. Read the flaw, write the patch, submit — and watch every attack vector run against your code in real time.

Browse challenges
Patch Mode

Fix the vulnerable function. Prove the fix holds against the full exploit suite.

PythonJavaScriptGoRustJava
Injection
Auth Bypass
Deserialization
SSRF
XXE
Exploit Mode

Write the payload that bypasses the code. Same challenge, attacker role.

SQL InjectionXSSCSRFPath Traversal
Payloads
Fuzzing
Chain Exploits
Token Forgery
Audit Modesoon

Review a codebase for latent vulnerabilities before they ship.

Code ReviewThreat ModelingSAST
Attack Surface
Data Flow
Trust Boundaries
CVE-derived challenges
500+
Supported languages
7
Exploit vectors shipped
1,240
OWASP coverage
A01–A10

Real CVE-derived challenges.

Every challenge traces to a real vulnerability. The harness runs the same exploit vectors the original CVE used.

leethack — JWT Algorithm ConfusionA02 · Crypto
MediumA02

JWT Algorithm Confusion

The verifyJWT function trusts the algorithm from the token header. Swap it to "none" to forge arbitrary tokens without a valid signature.

References
CVE-2015-9235 ↗CWE-347 ↗
123456789
function verifyJWT(token, secret) {  const [head, body, sig token

Most people guess what to patch next.

The OWASP Progress Map shows exactly where your gaps are. Work A01 through A10 in order. Know when you're ready.

View all categories
OWASP Top 10 — your progress
A01Broken Access Controlcomplete
A02Cryptographic Failurescomplete
A03Injectioncomplete
A04Insecure Designlocked
A05Security Misconfigurationlocked
A06Vulnerable Componentslocked
A07Auth Failureslocked
A08Integrity Failures
global leaderboard
#handleXPrank
10xkira_sec12,847top 1%
2null_byte11,203top 2%
3s3rv3r_s1de9,921top 5%
4patch_wizard8,445top 9%
5mem0ry_safe7,132top 14%
—you0unranked

Know exactly where you stand.

Start cracking. Free.

No card required. Pick a challenge, write the fix, watch it survive the exploit suite.

View pricing →
leethack

CVE-derived security training with a live exploit harness.

Challenges
Browse allPatch ModeExploit Mode
Platform
Learning PathsLeaderboardPricing
Company
PrivacyTermsSecurity
© 2026 Leethack. All rights reserved.
] =
.
split
(
'.'
);
const alg = JSON.parse(atob(head)).alg;
// trusts caller-supplied alg — the flaw
if (alg === 'none') return decode(body);
return crypto.verify(alg, secret, sig);
}
Rejects "alg: none"fail
RS256 confusionfail
Valid token passespass
Run Tests
challengesview all
0247JWT Algorithm ConfusionMedium
0312Cloud Metadata SSRFHard
0189DOM XSS via innerHTMLMedium
0421Permissive CORS HeadersEasy
0388Insecure DeserializationHard
locked
A09Logging Failureslocked
A10SSRFlocked

Ranked against every candidate who has ever touched the platform. Your percentile tells interviewers more than your resume can.

Start climbing