What a CTF actually is
A capture the flag competition is a set of security puzzles. Each puzzle hides a short string called a flag, usually in a fixed format like picoCTF{s0me_t3xt_here} or flag{...}. You find the string, paste it into a scoreboard, and receive points. That is the entire game loop.
What makes it worth your time is what you have to do to get the string. You will read disassembly, break a badly chosen cipher, exploit a web application, carve a deleted file out of a disk image, and overflow a buffer. Every one of those is a real skill, learned against a target that was built to be attacked, which is the only legal way to practice most of them.
A CTF is the one environment where breaking things is the assignment rather than the incident.
No prior security knowledge is required. Comfort with a command line and a willingness to be stuck for twenty minutes without giving up are the actual prerequisites, and both are learnable in a week.
The three formats you will meet
- Jeopardy. A board of independent challenges grouped by category and point value. You solve whichever you like, in any order. This is the format of essentially every beginner-friendly event, and it is what the rest of this guide assumes.
- Attack and defense. Every team runs the same vulnerable services. You patch your copy while exploiting everyone else's. Excellent, exhausting, and not where anyone should start.
- King of the hill. Teams compete to hold control of a shared machine. Rare, fun, and a mixture of the other two.
Events are also either time-boxed (a weekend, with a live scoreboard) or always-on practice platforms. Start with an always-on platform where nothing is on a clock, then enter a live event once the categories are no longer unfamiliar.
The six categories, and what each one really tests
These categories are not arbitrary competition conventions. Each maps onto a body of published standards you can go and read: the OWASP Top 10 for web, MITRE's CWE Top 25 for the memory-safety and injection classes behind binary exploitation, and the NIST SP 800 series for cryptography. That is what makes CTF practice transfer: the skills are indexed against the same taxonomies the industry uses to describe real defects.
| Category | You are given | The skill |
|---|---|---|
| General Skills | A shell, a file, or a port | Command-line fluency |
| Web Exploitation | A URL | Editing requests the site did not expect |
| Cryptography | Ciphertext and some parameters | Spotting the one badly chosen value |
| Forensics | An image, capture, or disk | Recovering what was hidden or deleted |
| Reverse Engineering | A compiled program | Reading code you do not have the source for |
| Binary Exploitation | A program and a port | Turning a memory bug into control |
Each of those has a full roadmap on this site, ordered from first challenge to advanced: General Skills, Web, Cryptography, Forensics, Reverse Engineering, and Binary Exploitation.
Choosing your first event
The correct first event is one with a large archive of beginner challenges that stays open forever, so nothing depends on being free on a specific weekend. picoCTF is the standard answer: it is aimed at students, its archive covers a decade of events, and the difficulty ramp inside each category is deliberately gentle. The picoCTF beginners guide covers registration, the practice gym, and how the instance system works.
Once a few categories feel familiar, add a weekend event. Live events are worth entering long before you are good at them, because a scoreboard and a deadline change how hard you are willing to think, and because the challenges are newer than anything in an archive.
What you need before you start
Much less than most guides suggest. A Linux shell, Python 3, and a browser. Everything else can wait until a challenge demands it.
# Windowswsl --install -d Ubuntu# then, everywheresudo apt update && sudo apt install -y python3 python3-venv file binutils xxd netcat-openbsd git
The CTF environment setup guide covers the full toolkit, Docker isolation, and the setup mistakes that cost people a day. Do not install a heavyweight security distribution as your first step. It is a large download that mostly saves you a few package installs, and it teaches you nothing about which tool does what.
How to work a challenge, in order
- Read the prompt twice. CTF prompts are terse and almost every word is load-bearing. A pun in the title frequently names the technique.
- Inventory what you were given. A file, a URL, a host and port, source code, or some combination. What you have narrows the technique before you know anything about the challenge.
- Run the free checks.
file,strings,xxd | headon any file. View source and open the Network tab on any URL. Connect and read the banner on any port. These cost seconds and end a real fraction of challenges outright. - Form one hypothesis and test it. Write down what you think is happening before you test it. If you are wrong, you learn something; if you are flailing, you learn nothing.
- Take notes as you go. What you tried, what it returned, what you ruled out. Twenty minutes in, this is what stops you repeating yourself.
- Timebox, then move. After roughly an hour with no progress, switch challenges. Solutions arrive while you are working on something else more often than they arrive from staring.
One solve, start to finish
Abstract method is easy to nod along to and hard to apply. Here is the loop above run against a real challenge, with nothing skipped. The target is picoCTF 2021 Static ain't always noise, which hands you a file and a hint about static analysis.
Step 1, read the prompt. The word "static" is doing work. Static analysis means looking at a program without running it, so the challenge is telling you the answer is visible in the file rather than in its behaviour.
Step 2, inventory. Two downloads: a binary and a shell script. No URL, no port. That rules out everything network-shaped, and the second file is a strong hint, because a challenge that hands you a tool wants you to run it.
Step 3, the free checks. Identify before you act, then look for readable text:
$ file staticstatic: ELF 64-bit LSB executable, x86-64, dynamically linked$ strings static | grep -i picoctfpicoCTF{...}
Step 4, done in under a minute. That is not an anticlimax, it is the point. A large share of beginner challenges end at strings plus grep, and players who skip the cheap checks because they feel too simple routinely spend an hour on something a pipe would have answered.
Step 5, then do it the intended way anyway. Run the provided script (bash ltdis.sh static, since the download does not carry the execute bit) and read what it produces: a saved file of strings with their offsets. The shortcut gave you the flag; the intended path teaches why the flag was there and how to find it when the file is bigger than your terminal buffer.
Step 6, notes. Two lines: non-stripped ELF, flag sat in plain strings; provided script saves strings with offsets for later inspection. That is the note that makes the next binary challenge faster.
A thirty day plan that actually works
One hour a day, four weeks, and you will have solved across every category rather than drilled one to death.
- Week 1: the shell and files. Work the Linux CLI guide and the first tiers of the General Skills roadmap. Solve Obedient Cat, Tab, Tab, Attack, and Static ain't always noise.
- Week 2: data and encodings. Read encodings and hex dumps, then XOR. Solve Endianness and Repetitions.
- Week 3: web and forensics. Read HTTP for CTF and steganography. Solve picobrowser, Cookies, and Can you see me.
- Week 4: pick a direction. Choose whichever week you enjoyed most and work its roadmap properly. If nothing stood out, do reverse engineering, because it feeds both binary exploitation and malware work and it is the largest category in most archives.
The mistakes almost every beginner makes
- Tool collecting instead of solving. A week configuring an environment is a week not spent stuck on a challenge, and being stuck is where the learning is.
- Skipping the easy challenges. The easy ones teach the vocabulary the hard ones assume. Nobody skips to the interesting part successfully.
- Reading the solution at the first sign of difficulty. Twenty minutes of productive confusion is worth more than an hour of reading. Set a timer if you have to.
- Never repeating a solve. Reading a writeup builds recognition; reproducing it builds capability. They feel identical and they are not.
- Not reading error messages. A 403 rather than a 404, a specific Python traceback, a segfault at a particular address: these are answers, not obstacles.
- Submitting the flag wrong. Whitespace, a missing brace, a leftover newline from a copy. If the platform says incorrect and you are confident, check the string character by character before rethinking the whole solve.
Rules, teams, and staying on the right side of the line
Three boundaries matter, and every event states them explicitly.
- Only attack in-scope targets. The challenge host, and nothing else. Not the scoreboard, not the organizers' website, not the other teams, unless the format explicitly says so.
- Do not share flags. Sharing solutions during a live event is the one rule whose breach gets teams disqualified, and it is easy to do accidentally in a public chat.
- Do not aim any of this at systems you do not own. The techniques are the same ones that carry criminal penalties outside a lab. Practice on CTFs, on deliberately vulnerable applications, and on your own machines.
On teams: join one earlier than feels comfortable. A team means someone who knows the category you are weakest in, and watching a stronger player work a challenge for ten minutes teaches more than a week of solo reading. Most events allow teams of four to eight, and beginner-friendly teams are easy to find in event chat servers.
Quick reference
Your first evening, in five steps
- Install WSL2 or a Linux VM and confirm Python 3 runs.
- Register on picoCTF and open the practice gym.
- Sort by difficulty and solve three General Skills challenges.
- Write two sentences of notes on each one.
- Read the General Skills roadmap and pick tomorrow's tier.
The habits that separate people who stick with it
Free checks before clever ideas. One hypothesis at a time. Notes during, not after. Timebox and rotate. Reproduce every solution you read. None of these are about talent, and all of them compound.
The gap between a first flag and genuine competence is smaller than it looks from the outside, and it is measured in solved challenges rather than in hours of reading. Set up your environment tonight, solve something easy, and start the thirty days.
Sources and further reading
CTF categories map onto real vulnerability taxonomies. These are the documents that make the mapping explicit, and they are worth a skim early rather than late.
- picoCTF itself, run by Carnegie Mellon University, is the event this site is built around.
- The OWASP Top 10 for the web category and MITRE's CWE Top 25 for the weakness classes behind binary exploitation and injection.
- The NIST SP 800 series is the standing reference for the cryptography category, from key sizes to password storage.
- 18 U.S. Code 1030 is the US statute that makes the scope rule above a legal boundary rather than etiquette. Other jurisdictions have close equivalents.