Generated CTF practice challenges
Freshly generated practice challenges with a known answer - encodings, classical ciphers, hashes, small-N RSA - so you can drill a technique without hunting for an event.
Open in ctfpalThe hardest part of learning this is not the techniques, it is finding something to practise on. Archived CTF challenges go stale, the good ones already have a writeup at the top of the search results, and a challenge you have already read the answer to teaches nothing.
These are generated fresh each time, with a random flag and random parameters, so the answer is not lookupable and the same challenge is different tomorrow.
How to use one
- Read the prompt, not the answer. Each one states what you have and what you want, the way a real challenge does - a blob and a flag format.
- Solve it in the workspace. The whole point is that the tools are one tab away; a challenge you solve by pasting into the tool you would actually reach for is practice at reaching for it.
- Check, then look at how it was made. Each challenge can show its own construction once you have answered, which is the step that turns a solve into a technique you recognise next time.
What is here, and what is not
The generated set covers the recognition band: encodings, Caesar and Vigenere, hash cracking with a small wordlist, small-modulus RSA, Morse, and a weak-secret JWT. Those are the techniques where drilling recognition is most of the skill - you are training the reflex that says "that trailing = is base64" before you have consciously decided anything.
Deliberately absent is anything above that band. A generated heap challenge or a generated ROP chain would be a generated binary, and a randomised binary that is solvable in the same way every time is not practice, it is a puzzle with a different skin. For those, the curriculum walks through real examples and the writeup archive points at thousands more.