Web Security Academy
Cyberlium Labs
Hands-on Web Security Academy labs — original Cyberlium content, same XP on web and app.
0/279
Labs solved
How to solve a lab
- 1
Sign in
Log in with your Cyberlium account so XP is saved (same account on the app and website).
- 2
Pick a topic & lab
Choose a topic on the left (XSS, SQLi, …), then open a lab. Apprentice is easiest; Expert is hardest.
- 3
Access the lab
Press ACCESS THE LAB — opens a unique host like {id}.lab.cyberlium.com (PortSwigger-style). Proxy that host with Burp.
- 4
Complete the objective
The site design matches the topic (shop, blog, account…). Solve inside that app; Academy marks Solved automatically.
Mystery lab challenge
Mystery lab
Solve a random lab with the title and description hidden — train recon without spoiling the bug class.
Take me to the mystery lab challengeAll labs
Browse every Cyberlium Academy lab across vulnerability classes.
- ApprenticeNot solved
Reflected XSS into HTML context
Reflect a payload in a search box and execute script.
- ApprenticeNot solved
Stored XSS via comment field
Persist a payload in a blog comment that runs for every viewer.
- PractitionerNot solved
DOM XSS via document.write
Exploit client-side sinks that write untrusted data into the DOM.
- ApprenticeNot solved
SQL injection login bypass
Bypass authentication with a classic tautology.
- PractitionerNot solved
SQL injection UNION attack
Use UNION SELECT to pull data from another table.
- ApprenticeNot solved
CSRF where token is not validated
Change a victim’s email with a forged request.
- PractitionerNot solved
Password reset poisoned host header
Poison the reset link host so tokens go to you.
- ApprenticeNot solved
File path traversal, simple
Read /etc/passwd via ../ sequences.
- ApprenticeNot solved
Basic SSRF against the local server
Make the server request an internal admin page.
- ApprenticeNot solved
IDOR viewing other users’ data
Change an ID parameter to view another account.
- ApprenticeNot solved
CORS vulnerability with basic origin reflection
Steal data via a reflected Access-Control-Allow-Origin.
- ApprenticeNot solved
Weak password hashing (MD5)
Crack a weak MD5 digest from a tiny wordlist.
- ApprenticeNot solved
Limit overrun race on a one-time coupon
Redeem a single-use coupon twice via parallel requests.
- PractitionerNot solved
Identify a CL.TE request smuggling desync
Name the classic desync when the edge trusts Content-Length.
- ApprenticeNot solved
GraphQL IDOR via user(id) query
Query another user’s email through GraphQL.
- ApprenticeNot solved
JWT accepted with alg none
Forge a token when signature checks are skipped.
- ApprenticeNot solved
Filter leak via injectable WHERE clause
Reveal hidden catalog rows by breaking a product filter query.
- PractitionerNot solved
Fingerprint Oracle via SQL errors
Identify the database engine using Oracle-specific version queries.
- PractitionerNot solved
Fingerprint MySQL / MSSQL version
Pull @@version-style output from a injectable search.
- PractitionerNot solved
Enumerate tables on non-Oracle DBs
List schema metadata then dump a sensitive table.
- PractitionerNot solved
Enumerate objects on Oracle
Query all_tables / dual patterns to map the schema.
- PractitionerNot solved
UNION column count discovery
Probe how many columns the original SELECT returns.
- PractitionerNot solved
Find a string column for UNION
Locate which UNION slot echoes text into the page.
- PractitionerNot solved
Pack multiple values into one column
Concatenate fields inside a single UNION column.
- PractitionerNot solved
Blind SQLi with true/false responses
Infer data from different page content on true vs false.
- PractitionerNot solved
Blind SQLi via conditional errors
Force DB errors only when a guess is correct.
- PractitionerNot solved
Visible error-based extraction
Use verbose SQL errors to leak data in the response body.
- PractitionerNot solved
Time-delay blind SQL injection
Confirm injectability with intentional sleep/delay.
- PractitionerNot solved
Time-based data exfiltration
Binary-search secrets using delay-on-true predicates.
- PractitionerNot solved
Out-of-band SQL interaction
Trigger a DNS/HTTP callback from the database tier.
- PractitionerNot solved
OOB SQL data exfiltration
Exfiltrate a secret over DNS/HTTP from SQL.
- PractitionerNot solved
SQLi filter bypass via XML encoding
Encode a payload so a WAF misses the SQL metacharacters.
- ApprenticeNot solved
DOM XSS via innerHTML sink
Abuse location.search reflected into innerHTML.
- ApprenticeNot solved
jQuery href sink from location.search
Set an anchor href from query input without sanitizing.
- ApprenticeNot solved
jQuery selector XSS via hashchange
Trigger a selector sink when the URL hash changes.
- ApprenticeNot solved
Reflected XSS into encoded attributes
Break out of an attribute when angle brackets are encoded.
- ApprenticeNot solved
Stored XSS in encoded href attribute
Poison a stored link when quotes are encoded poorly.
- ApprenticeNot solved
Reflected XSS inside a JS string
Escape a JavaScript string context with encoded brackets.
- PractitionerNot solved
DOM XSS inside a <select> write
Break out of options rendered via document.write.
- PractitionerNot solved
AngularJS expression injection
Evaluate an expression when braces are still live.
- PractitionerNot solved
Reflected DOM XSS chain
Combine server reflection with a client sink.
- PractitionerNot solved
Stored DOM XSS chain
Store data that later hits a DOM sink for other users.
- PractitionerNot solved
XSS with most tags blocked
Find an allowed event/tag combo past a denylist.
- PractitionerNot solved
XSS when only custom tags survive
Abuse custom elements still permitted by the filter.
- PractitionerNot solved
Reflected XSS with limited SVG
Use SVG markup that the filter still allows.
- PractitionerNot solved
XSS via canonical link tag
Inject into a canonical <link> reflection.
- PractitionerNot solved
JS string with quote/backslash escapes
Bypass incomplete escaping inside a JS string.
- PractitionerNot solved
JS string with mixed HTML+JS escapes
Chain encodings to break out of a quoted string.
- PractitionerNot solved
Stored XSS in onclick with escapes
Land a payload in an onclick handler despite encoding.
- PractitionerNot solved
XSS inside a template literal
Break Unicode-escaped template literal boundaries.
- PractitionerNot solved
Weaponize XSS to steal a session cookie
Exfiltrate document.cookie to prove impact.
- PractitionerNot solved
Weaponize XSS to capture passwords
Overlay or hook a login form via injected script.
- PractitionerNot solved
Use XSS to defeat CSRF defenses
Read a CSRF token from the DOM and forge a request.
- ExpertNot solved
AngularJS sandbox escape without strings
Escape a legacy Angular sandbox without string literals.
- ExpertNot solved
AngularJS sandbox escape under CSP
Combine Angular quirks with a strict CSP.
- ExpertNot solved
XSS with event handlers blocked
Find an execution path when on* handlers are stripped.
- ExpertNot solved
JavaScript URL XSS with char bans
Craft a JS URL despite blocked characters.
- PractitionerNot solved
Strict CSP bypass via dangling markup
Smuggle data out when scripts are blocked by CSP.
- ExpertNot solved
CSP bypass to regain script execution
Find a policy gap that allows XSS under CSP.
- PractitionerNot solved
CSRF token checked only on POST
Abuse a GET (or method override) path that skips the token.
- PractitionerNot solved
CSRF token optional when missing
Omit the token entirely and still change state.
- PractitionerNot solved
CSRF token not bound to the session
Reuse another user’s valid token in your request.
- PractitionerNot solved
CSRF token mirrored from a cookie
Set a cookie the server trusts as the CSRF secret.
- PractitionerNot solved
Duplicated CSRF token in cookie + body
Forge both copies of a duplicated CSRF value.
- PractitionerNot solved
SameSite=Lax bypass via method override
Trigger a state change across sites despite Lax.
- PractitionerNot solved
SameSite=Strict bypass via client redirect
Bounce through an on-site redirect to attach cookies.
- PractitionerNot solved
SameSite=Strict bypass via sibling domain
Use a related subdomain to deliver the CSRF.
- PractitionerNot solved
SameSite=Lax bypass via cookie refresh
Refresh a cookie in a context that later allows CSRF.
- PractitionerNot solved
Referer check skipped when header absent
Drop the Referer header to bypass validation.
- PractitionerNot solved
Broken Referer allowlist
Craft a Referer that fools a substring check.
- ApprenticeNot solved
Basic clickjacking over a CSRF form
Frame a sensitive action under an opaque decoy UI.
- ApprenticeNot solved
Clickjacking with URL-prefilled fields
Pre-fill framed inputs from query params.
- ApprenticeNot solved
Clickjacking past a frame-buster
Defeat a simple frame-busting script.
- PractitionerNot solved
Clickjacking that triggers DOM XSS
Combine framing with a DOM sink for script execution.
- PractitionerNot solved
Multistep clickjacking wizard
Guide the victim through several framed clicks.
- PractitionerNot solved
DOM XSS via postMessage
Handle an origin-unsafe web message that writes HTML.
- PractitionerNot solved
postMessage into a javascript: URL
Navigate using attacker-controlled message data.
- PractitionerNot solved
postMessage + JSON.parse sink
Parse hostile JSON from a message into dangerous sinks.
- PractitionerNot solved
DOM-based open redirection
Send users to an external URL via client-side logic.
- PractitionerNot solved
DOM-based cookie manipulation
Write attacker data into document.cookie.
- ExpertNot solved
DOM clobbering enables XSS
Clobber globals so a later sink executes script.
- ExpertNot solved
Clobber attributes to bypass HTML filters
Use clobbering to sneak past sanitizer assumptions.
- ApprenticeNot solved
CORS trusts the null origin
Read an API using Origin: null from a sandboxed frame.
- PractitionerNot solved
CORS trusts insecure schemes
Abuse an allowlist that accepts http:// attacker hosts.
- ApprenticeNot solved
XXE to read a local file
Declare an external entity that points at a file path.
- ApprenticeNot solved
XXE to pivot into SSRF
Make the XML parser fetch an internal HTTP resource.
- PractitionerNot solved
Blind XXE with OOB callback
Detect XXE via an out-of-band DNS/HTTP hit.
- PractitionerNot solved
Blind XXE via parameter entities
Use parameter entities when general entities are blocked.
- PractitionerNot solved
Exfiltrate via a malicious external DTD
Host a DTD that sends file contents OOB.
- PractitionerNot solved
Blind XXE data via error messages
Force parser errors that echo file contents.
- PractitionerNot solved
XInclude file retrieval
Use XInclude when DOCTYPE is blocked.
- PractitionerNot solved
XXE through an image upload
Upload a crafted SVG/XML that the server parses.
- ExpertNot solved
Repurpose a local DTD for XXE
Abuse a local DTD already on the server.
- ApprenticeNot solved
SSRF to another back-end host
Reach an internal service that is not localhost.
- PractitionerNot solved
Blind SSRF with OOB detection
Prove the server fetches your collaborator URL.
- PractitionerNot solved
SSRF past a blacklist filter
Bypass blocked hostnames with alternate encodings.
- PractitionerNot solved
SSRF via open redirect hop
Bounce through an allowed redirect to an internal URL.
- ExpertNot solved
Blind SSRF meets Shellshock
Hit a CGI endpoint vulnerable to Shellshock via SSRF.
- ExpertNot solved
SSRF past a whitelist check
Satisfy a hostname allowlist while still hitting internal targets.
- PractitionerNot solved
Confirm TE.CL desync via differentials
Spot TE.CL using mismatched responses.
- PractitionerNot solved
CL.TE smuggling past front-end rules
Hide a request the edge would have blocked.
- PractitionerNot solved
TE.CL smuggling past front-end rules
Deliver a privileged request via TE.CL.
- PractitionerNot solved
Reveal front-end request rewriting
Observe how the proxy rewrites absolute-form requests.
- PractitionerNot solved
Capture other users’ requests
Poison the queue so victim requests land in your lab.
- PractitionerNot solved
Smuggle a reflected XSS payload
Prefix a victim request with a reflected XSS prefix.
- PractitionerNot solved
Response queue poisoning via H2.TE
Desync HTTP/2 front-end with TE back-end.
- PractitionerNot solved
H2.CL request smuggling
Conflict HTTP/2 framing with Content-Length.
- PractitionerNot solved
HTTP/2 smuggling via CRLF injection
Inject CRLF sequences into HTTP/2 headers.
- PractitionerNot solved
HTTP/2 request splitting via CRLF
Split one client request into two backend requests.
- ExpertNot solved
0.CL request smuggling
Exploit a zero Content-Length desync case.
- PractitionerNot solved
CL.0 request smuggling
Abuse CL.0 parser disagreement.
- PractitionerNot solved
Basic CL.TE vulnerability
Demonstrate a minimal CL.TE lab solve.
- PractitionerNot solved
Basic TE.CL vulnerability
Demonstrate a minimal TE.CL lab solve.
- PractitionerNot solved
Obfuscate the Transfer-Encoding header
Hide TE from one parser but not the other.
- ExpertNot solved
Smuggling into web cache poisoning
Store a poisoned response via a desync.
- ExpertNot solved
Smuggling into cache deception
Make a cache store a private response as static.
- ExpertNot solved
HTTP/2 tunnelling to bypass access control
Reach an internal route via H2 tunnelling.
- ExpertNot solved
Cache poison via HTTP/2 tunnelling
Combine H2 tunnelling with cache poisoning.
- ExpertNot solved
Client-side desync attack
Desync the browser connection itself.
- ExpertNot solved
Server-side pause-based smuggling
Exploit timing pauses between request parts.
- ApprenticeNot solved
Simple OS command injection
Append a second command to a ping/stock checker.
- PractitionerNot solved
Blind command injection with delays
Prove injection using sleep/ping timing.
- PractitionerNot solved
Blind command injection with output redirect
Write command output into a web-readable path.
- PractitionerNot solved
Blind command injection OOB
Trigger a DNS/HTTP callback from the OS.
- PractitionerNot solved
OOB command output exfiltration
Exfiltrate file contents over DNS/HTTP.
- PractitionerNot solved
Basic server-side template injection
Evaluate a math expression in a template field.
- PractitionerNot solved
SSTI in a code context
Break out of a template expression already in code.
- PractitionerNot solved
SSTI using framework docs
Identify the engine and apply a documented payload.
- PractitionerNot solved
SSTI in an unknown engine
Fingerprint then exploit with a known payload.
- PractitionerNot solved
SSTI information leak via objects
Dump template objects supplied by the app.
- ExpertNot solved
SSTI inside a sandbox
Escape a restricted template sandbox.
- ExpertNot solved
Custom SSTI exploit chain
Build an exploit when stock payloads fail.
- PractitionerNot solved
Traversal with absolute path bypass
Reach /etc/passwd when relative ../ is blocked.
- PractitionerNot solved
Non-recursive ../ stripping bypass
Double-encode or nest sequences past a single strip.
- PractitionerNot solved
Traversal via extra URL-decoding
Bypass filters with nested encoding.
- PractitionerNot solved
Bypass start-of-path validation
Satisfy a required prefix then climb out.
- PractitionerNot solved
Null-byte extension bypass
Truncate a forced extension with %00.
- ApprenticeNot solved
Unprotected admin panel
Browse to an admin route with no auth check.
- ApprenticeNot solved
Hidden admin URL discovery
Find an obscure admin path that still lacks auth.
- ApprenticeNot solved
Role controlled by a request parameter
Flip a role query/body field to admin.
- ApprenticeNot solved
Role editable in the user profile
Change your own role through a profile update.
- ApprenticeNot solved
User id controlled by parameter
Swap uid to another account’s data.
- ApprenticeNot solved
Unpredictable user IDs still IDOR’d
Collect another GUID and request their object.
- ApprenticeNot solved
IDOR leak via redirect body
Catch another user’s data in a redirect response.
- ApprenticeNot solved
IDOR discloses a password field
Retrieve another account including password hash/plaintext.
- ApprenticeNot solved
Insecure direct object reference on messages
Open another user’s message by changing its id.
- PractitionerNot solved
URL-based access control bypass
Reach a restricted path via alternate routing.
- PractitionerNot solved
Method-based access control bypass
Use an unexpected HTTP method to skip a check.
- PractitionerNot solved
Missing ACL on one workflow step
Skip ahead to a privileged step in a multi-page flow.
- PractitionerNot solved
Referer-based access control
Forge a Referer the server treats as authorization.
- ApprenticeNot solved
Username enumeration via responses
Tell valid users apart from the error text.
- ApprenticeNot solved
Simple 2FA bypass
Skip the OTP step by jumping to a post-auth URL.
- ApprenticeNot solved
Broken password-reset logic
Reset another user’s password by tweaking parameters.
- PractitionerNot solved
Subtle username enumeration
Spot tiny timing/content differences.
- PractitionerNot solved
Username enumeration via timing
Measure response times to find valid accounts.
- PractitionerNot solved
Broken IP-based brute-force protection
Bypass a lockout that only keys on IP.
- PractitionerNot solved
Enumeration via account lock messages
Lock responses reveal whether a user exists.
- PractitionerNot solved
Broken 2FA logic
Verify OTP in the wrong account context.
- PractitionerNot solved
Brute-force a stay-logged-in cookie
Offline/online attack a predictable remember-me value.
- PractitionerNot solved
Offline password cracking
Crack a leaked hash from the app.
- PractitionerNot solved
Reset poisoning via middleware
Poison Host/X-Forwarded-Host on reset.
- PractitionerNot solved
Brute-force via password change
Abuse change-password to guess the current password.
- ExpertNot solved
Multiple credentials per request
Send many password guesses in one payload.
- ExpertNot solved
Brute-force a 2FA code
Automate OTP guessing when rate limits are weak.
- ApprenticeNot solved
Manipulate WebSocket messages
Edit a live WS message to escalate privileges.
- PractitionerNot solved
Cross-site WebSocket hijacking
Attach a victim’s cookies to a cross-site WS.
- PractitionerNot solved
Manipulate the WebSocket handshake
Tamper handshake headers to reach a privileged channel.
- PractitionerNot solved
Poison cache with an unkeyed header
Inject a header the cache does not vary on.
- PractitionerNot solved
Poison cache with an unkeyed cookie
Vary responses using a cookie excluded from the key.
- PractitionerNot solved
Poison cache with multiple headers
Combine several unkeyed inputs for a stable poison.
- PractitionerNot solved
Targeted poison via an unknown header
Discover a proprietary header that influences HTML.
- PractitionerNot solved
Unkeyed query string poisoning
Change a query the cache ignores in its key.
- PractitionerNot solved
Unkeyed query parameter poisoning
Find a parameter excluded from the cache key.
- PractitionerNot solved
Parameter cloaking
Hide a keyed param from the cache key parser.
- PractitionerNot solved
Fat GET cache poisoning
Send a body on GET that the origin honors.
- PractitionerNot solved
URL normalization cache poison
Abuse path normalization differences.
- ExpertNot solved
Poison a strict cache to hit DOM XSS
Get a DOM payload cached despite strict rules.
- ExpertNot solved
Combine cache poisoning primitives
Chain unkeyed inputs for a reliable hit.
- ExpertNot solved
Cache key injection
Inject delimiters into the cache key itself.
- ExpertNot solved
Internal cache poisoning
Poison a cache only visible on an internal tier.
- ApprenticeNot solved
Modify a serialized object
Flip an admin boolean inside a serialized blob.
- PractitionerNot solved
Modify serialized data types
Change types to bypass comparisons.
- PractitionerNot solved
Abuse app features for deserialization
Use a legitimate import/export path to run gadgets.
- PractitionerNot solved
Arbitrary PHP object injection
Instantiate a gadget class via PHP unserialize.
- PractitionerNot solved
Java deserialization via Commons
Trigger a Commons Collections gadget.
- PractitionerNot solved
PHP deserialization with a known chain
Use a documented PHP gadget chain.
- PractitionerNot solved
Ruby deserialization gadget
Exploit a documented Ruby marshal/YAML chain.
- ExpertNot solved
Custom Java gadget chain
Build a chain when public gadgets are blocked.
- ExpertNot solved
Custom PHP gadget chain
Develop an app-specific PHP POP chain.
- ExpertNot solved
PHAR deserialization gadget deploy
Trigger unserialize via a phar:// wrapper.
- ApprenticeNot solved
Secrets in error messages
Trigger an error that leaks a sensitive string.
- ApprenticeNot solved
Debug page disclosure
Find a debug/status endpoint left enabled.
- ApprenticeNot solved
Source disclosure via backup files
Download a backup that contains credentials.
- ApprenticeNot solved
Auth bypass via leaked info
Use disclosed data to skip authentication.
- PractitionerNot solved
Leak via version control history
Recover secrets from an exposed .git directory.
- ApprenticeNot solved
Excessive trust in client-side controls
Tamper prices or roles that are only checked in the browser.
- ApprenticeNot solved
High-level logic flaw
Buy an item using an unintended high-level flow.
- ApprenticeNot solved
Inconsistent security controls
Reach a privileged action on one endpoint but not another.
- ApprenticeNot solved
Flawed business rule enforcement
Violate a coupon/limit rule the UI claims to enforce.
- PractitionerNot solved
Low-level logic flaw
Abuse integer overflow / negative quantities.
- PractitionerNot solved
Inconsistent exceptional input handling
Send unexpected types that skip validation.
- PractitionerNot solved
Weak isolation on a dual-use endpoint
Reuse an endpoint for a higher privilege action.
- PractitionerNot solved
Insufficient workflow validation
Skip confirmation steps in a purchase flow.
- PractitionerNot solved
Auth bypass via flawed state machine
Jump states to become authenticated.
- PractitionerNot solved
Infinite money logic flaw
Manufacture credit through a refund/buy loop.
- PractitionerNot solved
Auth bypass via encryption oracle
Abuse an encrypt/decrypt feature to forge tokens.
- ExpertNot solved
Email parsing discrepancy ACL bypass
Use tricky email forms to confuse access checks.
- ApprenticeNot solved
Basic password-reset Host poisoning
Inject an attacker Host into the reset email link.
- ApprenticeNot solved
Host header authentication bypass
Access an internal admin by spoofing Host.
- PractitionerNot solved
Cache poison via ambiguous requests
Send conflicting host-like headers.
- PractitionerNot solved
Routing-based SSRF via Host
Make the edge route your request internally.
- PractitionerNot solved
SSRF via flawed Host parsing
Exploit parser differences on absolute URLs.
- PractitionerNot solved
Host validation bypass via connection state
Reuse a connection after Host checks pass.
- ExpertNot solved
Reset poisoning via dangling markup
Steal a reset token with dangling markup + Host tricks.
- ApprenticeNot solved
OAuth implicit flow auth bypass
Abuse implicit tokens delivered to the browser.
- PractitionerNot solved
SSRF via OpenID dynamic registration
Register a client that makes the IdP fetch your URL.
- PractitionerNot solved
Forced OAuth profile linking
Link an attacker IdP account to a victim.
- PractitionerNot solved
Account hijack via redirect_uri
Steal the code/token with an open redirect_uri.
- PractitionerNot solved
Steal tokens via open redirect
Bounce an OAuth redirect through an open redirect.
- ExpertNot solved
Steal tokens via a proxy page
Host a page that extracts tokens from redirects.
- ApprenticeNot solved
RCE via web shell upload
Upload a simple server-side script and execute it.
- ApprenticeNot solved
Bypass Content-Type upload checks
Send an allowed Content-Type with a dangerous body.
- PractitionerNot solved
Web shell upload via path traversal
Traverse out of the uploads folder when saving.
- PractitionerNot solved
Extension blacklist bypass
Use an alternate extension the blacklist missed.
- PractitionerNot solved
Obfuscated file extension bypass
Trick extension parsing with odd capitalization/encoding.
- PractitionerNot solved
Polyglot web shell upload
Craft a file that is both a valid image and code.
- ExpertNot solved
Web shell upload race
Hit the file before an async antivirus deletes it.
- ApprenticeNot solved
JWT accepted without verifying signature
Edit claims when the signature is ignored.
- ApprenticeNot solved
JWT flawed signature verification
Bypass a buggy verify implementation.
- PractitionerNot solved
JWT weak signing key
Brute a weak HMAC secret and forge admin.
- PractitionerNot solved
JWT via jwk header injection
Embed your own JWK the server trusts.
- PractitionerNot solved
JWT via jku header injection
Point jku at an attacker-controlled JWK set.
- PractitionerNot solved
JWT kid path traversal
Make kid read a predictable file as the HMAC key.
- ExpertNot solved
JWT algorithm confusion
Verify an RS256 key as HS256 with the public key.
- ExpertNot solved
Alg confusion without exposed key
Recover/derive material needed for confusion.
- PractitionerNot solved
Targeted scanning for quick wins
Use focused checks instead of noisy full scans.
- PractitionerNot solved
Scan non-standard data structures
Find bugs in JSON/GraphQL/custom encodings.
- PractitionerNot solved
Client prototype pollution via APIs
Pollute Object.prototype through a merge API.
- PractitionerNot solved
DOM XSS via prototype pollution
Turn pollution into a DOM XSS sink hit.
- PractitionerNot solved
Alternate prototype pollution vector
Find a second gadget when the first is blocked.
- PractitionerNot solved
Pollution past flawed sanitization
Bypass a filter that blocks __proto__ naively.
- PractitionerNot solved
Pollution in a third-party library
Abuse a vulnerable client library merge.
- PractitionerNot solved
Server-side pollution to privilege escalation
Escalate roles via polluted server objects.
- PractitionerNot solved
Detect server pollution without reflection
Blindly detect pollution gadgets.
- PractitionerNot solved
Bypass server pollution input filters
Encode around blocked prototype keys.
- PractitionerNot solved
RCE via server-side prototype pollution
Reach a dangerous sink after pollution.
- ExpertNot solved
Exfiltrate data via server pollution
Leak secrets through a pollution gadget.
- ApprenticeNot solved
Access private GraphQL posts
Query posts that should be authorization-gated.
- PractitionerNot solved
Accidental exposure of private fields
Request fields missing from the public schema docs.
- PractitionerNot solved
Find a hidden GraphQL endpoint
Discover an alternate /graphql path.
- PractitionerNot solved
Bypass GraphQL brute-force protections
Alias-batch login attempts in one request.
- PractitionerNot solved
CSRF over GraphQL mutations
Forge a cross-site GraphQL state change.
- PractitionerNot solved
Bypass rate limits via races
Send parallel attempts before counters update.
- PractitionerNot solved
Multi-endpoint race condition
Hit two endpoints that share unsafe state.
- PractitionerNot solved
Single-endpoint race condition
Parallelize one endpoint to corrupt state.
- PractitionerNot solved
Exploit a time-sensitive check
Win a narrow timing window in validation.
- ExpertNot solved
Partial construction race
Use an object before initialization finishes.
- ApprenticeNot solved
Detect NoSQL injection
Confirm operator injection in a JSON login.
- ApprenticeNot solved
NoSQL operator auth bypass
Bypass login with $ne / $gt style operators.
- PractitionerNot solved
Extract data via NoSQL injection
Enumerate fields with operators.
- PractitionerNot solved
Extract unknown fields with operators
Discover hidden document keys.
- ApprenticeNot solved
Exploit an API using its docs
Find a privileged operation documented but unprotected.
- PractitionerNot solved
Server-side parameter pollution in query
Inject extra params the backend misparses.
- PractitionerNot solved
Find and exploit an unused API endpoint
Call a legacy endpoint still wired to production.
- PractitionerNot solved
Mass assignment vulnerability
Send privileged fields the binder accepts.
- ExpertNot solved
SSPP in a REST URL path
Pollute path parameters server-side.
- ApprenticeNot solved
LLM APIs with excessive agency
Convince a tool-using LLM to take a privileged action.
- PractitionerNot solved
Exploit vulnerabilities in LLM APIs
Abuse model/tool endpoints directly.
- PractitionerNot solved
Indirect prompt injection
Plant instructions in retrieved content.
- ExpertNot solved
Insecure LLM output handling
Turn model output into XSS/SSTI/RCE in the app.
- ApprenticeNot solved
AI agent destructive actions
Trick an agent into deleting or wiping data.
- ApprenticeNot solved
AI agent data exfiltration
Coax an agent to send secrets outbound.
- PractitionerNot solved
AI agent triggers a secondary bug
Use the agent as a confused deputy into XSS/SSRF.
- PractitionerNot solved
Bypass AI scanner defenses
Smuggle content past an LLM safety/scanner layer.
- ApprenticeNot solved
Path mapping cache deception
Map a private path onto a cacheable static suffix.
- PractitionerNot solved
Path delimiter cache deception
Abuse ; or similar delimiters vs cache rules.
- PractitionerNot solved
Origin normalization deception
Mismatch origin normalization vs cache key.
- PractitionerNot solved
Cache-server normalization deception
Exploit how the cache normalizes paths.
- ExpertNot solved
Exact-match cache rule deception
Beat exact-match rules with subtle path variants.
Curriculum lesson labs still appear in Learn. This Academy is Cyberlium's interactive path — original labs, fully hosted here.