HACKR.GG
// Active targets

Hack a Machine

Hands-on penetration testing labs. Each machine runs a real vulnerable app — pick a target, get a shell, capture the flag.

// Category
Linux CLI Sandbox
FundamentalsEasy

Linux CLI Sandbox

A clean terminal environment to practice Linux commands. No target to hack — just you, bash, and the filesystem.

▶ TERMINALStart →
SoleMate Shoes
XSSEasy

SoleMate Shoes

A shoe blog left a little something in your session. Find the XSS vulnerability and steal the cookie.

▶ TERMINALStart →
The Search Bar
XSSEasy

The Search Bar

Crapazon's product search reflects your input directly on the page. Something in that response shouldn't be there.

▶ TERMINALStart →
Seller Login
SQL InjectionEasy

Seller Login

Crapazon's seller portal has a login form that talks directly to the database. No sanitisation, no prepared statements — just raw SQL.

▶ TERMINALStart →
Order Lookup
IDOREasy

Order Lookup

Crapazon's order page shows your orders fine. But what happens if you change the order ID in the URL? Does it check who you are?

▶ TERMINALGet Pro →
Ping Tool
Command InjectionEasy

Ping Tool

Crapazon's network diagnostics tool pings any host you enter. The host goes straight into a shell command.

▶ TERMINALGet Pro →
Account Settings
CSRFEasy

Account Settings

Crapazon's account settings form has no CSRF token. Any page can silently change Alice's email on her behalf.

▶ TERMINALGet Pro →
Link Preview
SSRFMedium

Link Preview

WhatsUp's link preview feature fetches any URL you send it — including internal ones.

▶ TERMINALGet Pro →
Photo Upload
File UploadMedium

Photo Upload

InstaSnap lets you upload a photo to your profile. No file type validation — upload anything you want.

▶ TERMINALStart →
Plan Checkout
Business LogicMedium

Plan Checkout

eCorp Fintech lets you pick a plan and send the price yourself. The server trusts whatever number you send.

▶ TERMINALGet Pro →
Sign In
Broken AuthenticationMedium

Sign In

Chirper has no rate limiting, no lockout, and no CAPTCHA. Brute-force the admin account.

▶ TERMINALStart →
Exchange Platform
Security MisconfigurationEasy

Exchange Platform

CryptoBurner left debug mode on in production. Sensitive endpoints are wide open.

▶ TERMINALGet Pro →
Online Banking Login
Brute ForceEasy

Online Banking Login

FirstBank's internet banking has no lockout and no rate limiting. The customer's PIN is 4 digits.

▶ TERMINALGet Pro →
Account Statements
IDOREasy

Account Statements

FirstBank's statement viewer takes an account number in the URL. It never checks who you are.

▶ TERMINALGet Pro →
Transfer Funds
Business LogicMedium

Transfer Funds

FirstBank's transfer API takes an amount from the client. No validation on whether it's positive.

▶ TERMINALGet Pro →
Session Token
JWT AttacksMedium

Session Token

FirstBank signs session JWTs with a weak secret. Crack it, forge a new token with role: admin.

▶ TERMINALGet Pro →
Shoppr — Price Manipulation
Business LogicMedium

Shoppr — Price Manipulation

A premium e-commerce store built with client-side price trust. The checkout API accepts whatever total the browser sends. Intercept the request and pay $0.01 for $279 of gear.

Get Pro →
Hackr Interceptor
ToolEasy

Hackr Interceptor

Your personal HTTP intercept session. Spin up an isolated interceptor instance.

Get Pro →
Asset Recon
Recon & OSINTMedium

Asset Recon

Critbook is a social review platform with a sloppy dev team. Map its full attack surface — subdomains, hidden paths, leaked keys, exposed services.

▶ TERMINALGet Pro →
CORS Misconfiguration
CORSMedium

CORS Misconfiguration

Critbook reflects any Origin header in its CORS response. Exploit the misconfiguration to make cross-origin requests that leak authenticated data.

▶ TERMINALGet Pro →
OAuth Login
OAuth AttacksHard

OAuth Login

Critbook's OAuth flow doesn't validate the state parameter. Hijack the authorisation code and log in as another user.

▶ TERMINALGet Pro →
GraphQL API
GraphQLHard

GraphQL API

Critbook exposes a GraphQL API with introspection enabled and no authorisation on sensitive queries. Extract the schema and dump user data.

▶ TERMINALGet Pro →
Password Reset
Password Reset FlawsMedium

Password Reset

Chirper's password reset uses a short numeric token sent by email. The endpoint has no rate limiting — enumerate the token and take over any account.

▶ TERMINALGet Pro →
2FA Bypass
2FA BypassHard

2FA Bypass

FirstBank added two-factor authentication but the 2FA endpoint is a different route with no session binding. Skip it entirely and go straight to the dashboard.

▶ TERMINALGet Pro →
Checkout Redirect
Open RedirectEasy

Checkout Redirect

Crapazon's post-payment redirect takes a URL from the query string and doesn't validate it. Send a customer anywhere after checkout.

▶ TERMINALGet Pro →
Coupon Code
Race ConditionsHard

Coupon Code

Crapazon's coupon system checks then applies codes in two separate operations. Send concurrent requests to apply the same code multiple times before the check runs.

▶ TERMINALGet Pro →
File Viewer
Path TraversalEasy

File Viewer

DevDocs serves files from a local directory. The filename parameter isn't sanitised — traverse outside the intended folder and read arbitrary files from the server.

▶ TERMINALGet Pro →
Log Viewer
Security MisconfigurationEasy

Log Viewer

LogViewer aggregates application logs with no authentication on the log stream endpoint. Find evidence of an attacker in the logs and retrieve the flag they left behind.

▶ TERMINALGet Pro →
Safety Filter
Prompt InjectionMedium

Safety Filter

KladGPT has a content policy filter. Craft a prompt injection payload that bypasses it and makes the model reveal its system prompt and the hidden flag.

Start →
Web Summariser
Indirect Prompt InjectionMedium

Web Summariser

KladGPT's web summariser fetches a URL and summarises the content. Supply a URL pointing to a page with injected instructions and hijack the model's output.

Get Pro →
Jailbreak
LLM JailbreakingHard

Jailbreak

KladGPT refuses harmful requests. Use roleplay framing, token manipulation, and multi-turn context to jailbreak the model and extract the flag from its restricted knowledge.

Get Pro →
Phish Sarah Chen
Social EngineeringEasy

Phish Sarah Chen

NovaPay's operations manager Sarah Chen is your target. Use PhishKit to craft a convincing email, capture her credentials, and log into her dashboard.

Get Pro →
MongoDB Login
NoSQL InjectionMedium

MongoDB Login

A Node.js app authenticates against MongoDB by dropping your input directly into a query object. Inject a NoSQL operator to bypass the password check entirely.

▶ TERMINALGet Pro →
Template Engine
SSTIHard

Template Engine

A Node.js app renders user input through the Pug template engine without sanitisation. Inject a template expression to execute server-side code and read the flag.

▶ TERMINALGet Pro →
Document Parser
XXEHard

Document Parser

DocParser accepts XML uploads and processes them server-side. Inject an XXE payload to make the parser read local files and exfiltrate their contents.

▶ TERMINALGet Pro →
User Registration
Mass AssignmentMedium

User Registration

An API blindly binds the request body to a user object. Include an isAdmin field in your registration request and promote yourself to administrator.

▶ TERMINALGet Pro →
Session Fixation
Session SecurityHard

Session Fixation

The app issues a session token before login and never rotates it afterwards. Fix the session ID before the victim logs in and inherit their authenticated session.

▶ TERMINALGet Pro →
Theme Manager
RCEHard

Theme Manager

PageForge's theme upload accepts any file type and executes uploaded scripts server-side. Upload a webshell, get command execution, find the admin credentials, and deface the site.

▶ TERMINALGet Pro →
The Comment Box
XSSEasy

The Comment Box

Zeddit renders comments as raw HTML with no sanitisation. Inject a payload that executes JavaScript in any visitor's browser. The session cookie is your target.

▶ TERMINALStart →
Saved Drafts
IDOREasy

Saved Drafts

Zeddit assigns sequential IDs to drafts and returns them without checking ownership. What's in draft #1?

▶ TERMINALGet Pro →
The Vote Button
CSRFMedium

The Vote Button

Zeddit's upvote endpoint has no CSRF token and no Origin check. The mod bot visits submitted report URLs with a privileged session. Make the mod vote for you.

▶ TERMINALGet Pro →
Karma Dashboard
Business LogicEasy

Karma Dashboard

Zeddit doesn't prevent self-voting or duplicate votes. Exploit the broken logic to push your own post's karma past the threshold and unlock the flag.

▶ TERMINALGet Pro →
SSH Bruteforce
Network SecurityEasy

SSH Bruteforce

A Linux server has SSH open with password authentication enabled. You have a username. Brute-force the password with Hydra and escalate to root.

▶ TERMINALGet Pro →
Container Escape
Linux SecurityMedium

Container Escape

You have a shell inside a Docker container. The docker.sock has been mounted in. Escape to the host filesystem and read the root flag.

▶ TERMINALGet Pro →
Shell Escape
Linux SecurityEasy

Shell Escape

A vulnerable web app passes user input directly into a shell command. Review the source, understand the injection point, and exploit it to read the flag.

▶ TERMINALGet Pro →
Post-Ex: Loot the Box
Linux SecurityMedium

Post-Ex: Loot the Box

You have a shell on the target. The flag is buried somewhere in configs, logs, history files, and backups. Find it before the blue team wipes the box.

▶ TERMINALGet Pro →
Persist and Survive
Linux SecurityMedium

Persist and Survive

You have root on a compromised host. Plant a cron-based backdoor that survives a cleanup sweep, then trigger the cleanup to unlock the flag.

▶ TERMINALGet Pro →
Credential Harvest
Linux SecurityMedium

Credential Harvest

You have a low-priv shell. Credentials for the dbadmin account are scattered across configs, history files, and memory dumps. Find them and switch user to read the flag.

▶ TERMINALGet Pro →
Chisel Pivot
Network SecurityMedium

Chisel Pivot

You're on a jump box with access to an internal service that isn't directly reachable. Use chisel or socat to tunnel through and retrieve the flag from the internal endpoint.

▶ TERMINALGet Pro →
AcmeCorp Network
Network SecurityEasy

AcmeCorp Network

AcmeCorp's server 'only runs a website' — or so they claim. Scan every port, fingerprint every service, and find the flag hidden in an exposed banner or file.

▶ TERMINALGet Pro →
Escape the Box
Linux SecurityMedium

Escape the Box

You have a low-privilege shell as 'hacker'. The root flag is at /root/flag.txt. Find and exploit the misconfiguration that lets you escalate.

▶ TERMINALGet Pro →
Crack the Vault
Brute ForceEasy

Crack the Vault

VaultCorp's admin panel is protected by a weak password. A hash from their database has been leaked. Crack it — or brute force your way in.

▶ TERMINALGet Pro →
Find What They Forgot
Security MisconfigurationEasy

Find What They Forgot

A startup deployed straight from their dev machine. Directory listing, exposed .git, leaked .env — everything is there if you look. Find the flag.

▶ TERMINALGet Pro →
Map CorpNet
Recon & OSINTMedium

Map CorpNet

A corporate server is running FTP, SMB, and SNMP alongside a web service. Enumerate every service and find the flag hidden in the exposed data.

▶ TERMINALGet Pro →
Read the Wire
Network SecurityMedium

Read the Wire

You've captured traffic from a corporate network. Credentials were transmitted in cleartext. Find them, authenticate, and retrieve the flag.

▶ TERMINALGet Pro →
AcmeCorp DNS Takeover
Advanced WebMedium

AcmeCorp DNS Takeover

AcmeCorp has dangling CNAME records pointing to deprovisioned services. Find them, fingerprint them, and claim the subdomain.

▶ TERMINALGet Pro →
SEND
Advanced WebEasy

BankVault Transfer

BankVault forgot to set X-Frame-Options. Overlay their transfer button and trick a victim into sending funds.

▶ TERMINALGet Pro →
GET /reset HTTP/1.1Host: evil.comToken: …
Advanced WebMedium

ResetHub Poisoning

ResetHub builds password reset URLs using the HTTP Host header. Inject your own host to steal the reset token.

▶ TERMINALGet Pro →
Object__proto__isAdmin
Advanced WebMedium

ConfigHub Merge

ConfigHub uses a recursive deep merge with no key sanitisation. Pollute Object.prototype to gain admin access.

▶ TERMINALGet Pro →
Pickle RCE
InjectionMedium

Pickle RCE

A Flask app stores sessions as base64-encoded Python pickle objects. Craft a malicious __reduce__ payload to achieve RCE and exfiltrate the flag.

▶ TERMINALGet Pro →
SwiftNews Cache Poison
Advanced WebHard

SwiftNews Cache Poison

SwiftNews caches by URL only. The X-Forwarded-Host header isn't in the cache key but gets reflected — poison the cache for every visitor.

▶ TERMINALGet Pro →
SnapGram Upload Filter
File UploadMedium

SnapGram Upload Filter

A profile photo uploader that checks file extension and Content-Type. Spoof the MIME type to bypass the filter and execute a webshell.

▶ TERMINALGet Pro →
Blind Ping Feedback
Command InjectionMedium

Blind Ping Feedback

A feedback form pings your domain to test connectivity — but shows no output. Confirm injection with sleep, then exfiltrate the flag.

▶ TERMINALGet Pro →
TokenForge Login
JWT AttacksMedium

TokenForge Login

TokenForge's auth server accepts JWTs with alg set to 'none'. Log in as a regular user, forge an admin token by removing the signature.

▶ TERMINALGet Pro →
Beeper User Search
SQL InjectionMedium

Beeper User Search

Beeper's user search passes your query directly into a SQL UNION. Pivot from the users table to the secrets table and extract the hidden flag.

▶ TERMINALStart →
LinkPeek — Internal Fetch
SSRFEasy

LinkPeek — Internal Fetch

LinkPeek is a URL preview service. It'll fetch any URL you give it — including internal ones. Find the hidden endpoint that was never meant to be public.

▶ TERMINALGet Pro →
FileVault — Escape the Directory
Path TraversalEasy

FileVault — Escape the Directory

FileVault reads files from /files/ by name — but forgets to sanitise the path. Escape the base directory and read the flag hidden in /secret/flag.txt.

▶ TERMINALGet Pro →
VaultDB — NoSQL Login Bypass
NoSQL InjectionEasy

VaultDB — NoSQL Login Bypass

VaultDB's login API passes your JSON straight to a NoSQL-style comparison. Send a MongoDB \$ne operator as your password and bypass authentication entirely.

▶ TERMINALGet Pro →
CardCraft — Template Injection
SSTIEasy

CardCraft — Template Injection

CardCraft builds greeting cards by concatenating your name directly into a Pug template. Inject template syntax to leak the server's FLAG environment variable.

▶ TERMINALGet Pro →
SearchIt — Reflected XSS Cookie Theft
XSSEasy

SearchIt — Reflected XSS Cookie Theft

SearchIt reflects your query into the page with no escaping. Craft an XSS payload, send it to the bot endpoint, and steal the admin's session cookie.

▶ TERMINALStart →
nonce
Advanced WebHard

NoteKeeper CSP

NoteKeeper has XSS but hides behind Content-Security-Policy. Three progressively harder CSP configurations to bypass.

▶ TERMINALGet Pro →
AuthLog — Forge a Log Entry
Log InjectionEasy

AuthLog — Forge a Log Entry

AuthLog writes your username straight into an audit log. Inject a newline to append a fake system marker — then trigger the compliance check to claim the flag.

▶ TERMINALGet Pro →
FileDump — Directory Listing Exposed
Security MisconfigurationEasy

FileDump — Directory Listing Exposed

FileDump has an unlisted /backup/ path with directory listing enabled. Use gobuster to find it, browse the index, and grab the config file with the flag inside.

▶ TERMINALGet Pro →
MemberZone — Forge an Admin Cookie
Session SecurityEasy

MemberZone — Forge an Admin Cookie

MemberZone stores your session as plain Base64 JSON. Decode your guest cookie, change the role to admin, re-encode it, and access the admin panel.

▶ TERMINALGet Pro →
SpotAPI — Bypass the Rate Limiter
API AbuseEasy

SpotAPI — Bypass the Rate Limiter

SpotAPI rate-limits unlock attempts by IP — but it trusts the X-Forwarded-For header you control. Rotate it on every request to brute force the 4-digit artist code.

▶ TERMINALGet Pro →
SpotAPI Vault — Multi-Header Fingerprint Bypass
API AbuseMedium

SpotAPI Vault — Multi-Header Fingerprint Bypass

SpotAPI Vault fingerprints you by IP, User-Agent, and X-Request-ID. All three are user-controlled. Rotate all headers to bypass rate limiting and brute force the vault PIN.

▶ TERMINALGet Pro →
role:userrole:admin
Advanced WebMedium

LiveChat Auth Bypass

LiveChat validates your session when the WebSocket connects — but never again. Send an admin action as a regular user.

▶ TERMINALGet Pro →
SlackIt — Forge an Admin Token
WebSocket SecurityMedium

SlackIt — Forge an Admin Token

SlackIt validates tokens by prefix only — no signature. Any token starting with admin_ grants admin access. Forge one and read the private #admin channel to get the flag.

▶ TERMINALGet Pro →
bodyconfigid=cfg
Advanced WebMedium

PageForge CMS

PageForge strips <script> tags but allows id/name attributes. Clobber window.config to redirect a fetch to your server.

▶ TERMINALGet Pro →
PageForge — Two-Level DOM Clobbering
DOM ClobberingMedium

PageForge — Two-Level DOM Clobbering

PageForge's bot checks window.app.settings.trusted. Use the two-anchor technique to clobber a two-level property chain and earn the trusted badge.

▶ TERMINALGet Pro →
TunnelProxy Smuggling
Advanced WebHard

TunnelProxy Smuggling

TunnelProxy uses Content-Length; the backend uses chunked encoding. Smuggle a request prefix to poison the next victim.

▶ TERMINALGet Pro →
StreamProxy CDN — TE.CL Cache Poisoning
HTTP SmugglingHard

StreamProxy CDN — TE.CL Cache Poisoning

StreamProxy CDN reads chunked (TE) while the origin reads Content-Length (CL). Use TE.CL desync to smuggle a request that poisons the cache for all visitors.

▶ TERMINALGet Pro →
Tweetr — Blind Boolean SQLi
SQL InjectionMedium

Tweetr — Blind Boolean SQLi

Tweetr's username check leaks only true/false. The flag lives in a hidden secrets table. Use blind boolean injection to extract it character by character.

▶ TERMINALStart →
ShipFast — Command Injection Hunt
Command InjectionMedium

ShipFast — Command Injection Hunt

ShipFast has three features — only one calls a shell command. Identify the injectable endpoint, confirm with a timing probe, and extract both flags from /app/secrets/.

▶ TERMINALStart →
ShopEasy — XSS in Attribute Context
XSSEasy

ShopEasy — XSS in Attribute Context

ShopEasy encodes HTML in the page body but reflects your search term raw inside a value attribute. Break out of the attribute to fire an XSS and steal the session cookie.

▶ TERMINALGet Pro →
NoteSnap — DOM XSS via Hash Source
XSSEasy

NoteSnap — DOM XSS via Hash Source

NoteSnap reads location.hash and writes it directly to innerHTML. Craft a URL fragment with an XSS payload to steal the session cookie.

▶ TERMINALStart →
SupportDesk — Blind XSS via Contact Form
XSSMedium

SupportDesk — Blind XSS via Contact Form

SupportDesk stores contact form submissions and renders them in an admin panel. The admin bot visits every 5 seconds. Inject a payload that calls back to your listener and steal the admin cookie.

▶ TERMINALStart →
DevHub — CSRF Token Not Session-Bound
CSRFMedium

DevHub — CSRF Token Not Session-Bound

DevHub validates CSRF tokens but checks a global pool — any valid token from any session passes. Get your own token, craft an attack page, queue the admin bot, and escalate your role.

▶ TERMINALGet Pro →
PixelVault — SVG Upload XSS
XSSEasy

PixelVault — SVG Upload XSS

PixelVault allows SVG uploads and serves them with image/svg+xml on the same origin. Upload a malicious SVG containing a script tag to steal the gallery_session cookie.

▶ TERMINALGet Pro →