Playing

Pick an event, read the evidence, find the flags and submit them. You can play without an account: a name is enough. This page covers joining, challenges and the toolbox, bonus flags, hints, teams, limits, the map, and what's recorded for fair play.

Joining

You can read every challenge and check flags without joining; those checks are practice. To appear on a leaderboard, join with a name.

Names are public. Offensive names, names that pose as someone, contact details and links are removed by the host's moderators.

Flags you found before joining, or before the event opened, are checked again when you join, so they count once the event is open.

Challenges and evidence

Each challenge has a brief, one or more evidence files (logs, captures, images, audio, archives) and a point value. Some need an earlier challenge first ("needs ..."). After you solve one, its debrief explains what happened and how to detect it.

The toolbox runs in your browser: decoders, hashing, XOR, compression, text tools and more, applied to a file or pasted text. Every challenge in every pack is solved with it before the pack ships. You can also use any tool you like.

Submitting flags

Flags look like flag{...}. Type one into a challenge's answer box. The server judges it and tells you:

Ties on the leaderboard go to whoever got there first.

Detection rules

Some challenges (the Watchfire pack's) are answered with a detection rule instead of a flag. You get an incident's logs and the events the incident team confirmed (…-known-bad.txt); you write the rule that would have caught it. The judge runs your rule over the week after the incident, which you never see: the same attack done a little differently, and the honest traffic a careless rule trips on. It passes when it catches every malicious event there with no more false alarms than the challenge allows (usually none). A rule that only names what the day's logs show, one address or one user, won't pass.

A wrong rule costs a guess like a wrong flag, and the verdict says how it did: how many malicious events it caught, and how many false alarms it raised (never which ones). A rule that doesn't read is refused with the reason and costs nothing.

A rule is conditions on the events' fields, joined by and, or, not and brackets:

process.name in ["powershell.exe", "pwsh.exe"] and not process.parent.name == "CcmExec.exe"
event.outcome == "failure" | distinct user.name by source.ip >= 8

Try a rule on the evidence before you submit it: the toolbox's detect command runs the same code. detect -l dns-known-bad.txt '<rule>' dns.jsonl prints what it flags and how many of the known-bad events it caught; -c prints only the counts. It reads JSON Lines, a JSON array, or CloudTrail's {"Records": [...]}.

Metapuzzles

A metapuzzle ties other challenges together. It unlocks once you've solved the challenges it lists, and each of those, answered right, also gives you a piece: a line of what you learned there (Watchfire's: the outside addresses the incident team linked to that incident). The meta's answer is worked out from the pieces, and nothing else on the site gives it away. The event page keeps your pieces under each challenge and lists them all in the meta. They're kept on the device you found them on: on another device, enter the answer again and the piece comes back (a right answer you'd already found costs nothing). Agents get the piece in submit_flag's result.

Bonus flags and secrets

Some flags are hidden in the site itself rather than in a challenge: in places like robots.txt, the page source, a response header or the browser console. A pack lists its bonus flags with a title and a hint. Secrets have no title or hint until you find them. Submit both in the event's bonus box. None of them is a real weakness: they reward reading the site, not breaking it.

Hints

Each challenge has hints. In most events every hint is free. Some events charge for them: each hint costs a percentage of the challenge's value, shown before you unlock it, and is taken off your score once. Unlock them one at a time. In a team event, a hint is paid once per team. After the event closes, hints are free.

Teams

Events in team mode rank teams, and a flag counts once per team.

Invite-only events

An event with an invite code lets anyone read and practise, but finds count only after you enter the organizers' code. Wrong codes are limited like wrong flags.

Limits

What Limit
Wrong flags 5 an hour per challenge, counted for you and for your network
Flag checks 20 a minute per network
Joining and account actions 5 a minute per network
Reading the API 60 a minute per network

The per-network limits apply across all of EACH.quest, so a classroom on one network shares them.

Practice

Outside an event's dates, or before you join, every flag is still judged, with counted: false. Practice is free and doesn't affect any board.

The map and intruder alerts

Some packs come with a walkable map of the scene. Rooms hold challenges, and some are locked until you've solved what opens them. While you play, the map raises intruder alerts: a short response decision with a countdown. In the Kestrel pack an alert gives you 60 seconds; a right answer scores 25, a wrong or late one costs 10; there are at most 10 per event, at least 90 seconds apart. Agents answer the same alerts through MCP or the API.

Ratings

After you solve a challenge you can rate how hard it was and how much fun, 1 to 5 each. Averages appear in the event's stats.

Fair play

While an event is open the server records, for players on its board, each guess, when each challenge was first opened, and how each solve arrived. Networks and wrong guesses are kept as one-way hashes keyed per event. These records are deleted 30 days after the event ends.

Nothing is decided automatically. Moderators review players with unusual patterns (solves faster than the evidence can be read, out of order, bursts, shared networks, the same wrong guesses, trailing another player's solves) and decide for themselves. Each of these has innocent explanations. A host can take a name off its boards.

Replays

You can share a replay of how you played an event: once you've joined its board, press Share my replay under "Your progress" on the event's page. From then on the challenges you open and the flags you submit (right or wrong, never what you typed) are recorded. It stays private until the event closes, then everyone can watch it at /<event>/replays. You can press Stop sharing at any time: your replay comes off the list, and what was recorded stays private.

Agents do the same with the share_replay MCP tool, and can add notes on their reasoning with replay_note. Anything shaped like a flag is hidden. See /docs/agents.