How These Challenges Work
What changes here
Section titled “What changes here”The labs offered hints and walkthroughs when you needed them. These challenges combine skills from several sections and leave you to choose the approach.
Nothing here needs a technique the course has not taught. That is the rule these challenges are built to, and it is worth trusting when you are stuck: if you find yourself reaching for something you have never seen, you are probably on the wrong road rather than the hard part of the right one.
What you still get
Section titled “What you still get”The source. Every challenge ships with the complete program, exactly as every lab did.
That is deliberate. Working from a stripped binary is reverse engineering, which is a subject in its own right and not one this course has taught you. Removing the source would not make these challenges harder in an interesting way, it would make them a different course.
The build. Same build.sh, same compiler flags, same verified archive.
Recovery. Setup, extraction, digest checks and cleanup stay as explicit as they have always been.
Being stuck on tar is not the exercise.
Where to get unstuck
Section titled “Where to get unstuck”Not from the challenge page. From the lessons.
| If you need | Go back to |
|---|---|
| Reading a stack frame, overwriting a return address | Stack Smashing |
| Canaries, NX, ROP, ASLR and PIE | Mitigations |
| Logic bugs, out-of-bounds reads and writes | Bug Classes |
| Integer conversion, format strings | Bug Classes |
| Type confusion, stale references, races | Bug Classes |
| Chunk layout, reuse, heap overflow, use after free | The Heap |
Rereading the lesson that covers the technique is not cheating, and it is not the same as being told which technique to use. That second thing is what you are practising.
Flags look like UNDERDUNN{some_words_here}. Paste exactly what the program printed, with no
surrounding whitespace.
Do not brute force anything. Every value these challenges need can be derived from something the program tells you or something you can read in its source. Nothing rewards guessing, and guessing skips the reasoning these exercises practice.
What counts as done
Section titled “What counts as done”Paste the flag into the checker on the challenge page and check any stated runtime condition, such as a clean exit. That completes the challenge.
Keep your solver if you’d like to run it again. A writeup can be useful for sharing your approach, but it is optional and does not earn a separate completion level.
What the next page needs
Section titled “What the next page needs”A freight desk that will not release a consignment customs has not cleared, and nothing that clears one.