hacker tutorialscourse catalog

Courses / Course 11 · Security

Break software to understand it

You end up withThe OverTheWire Bandit levels from a bare shell; a reading knowledge of x86-64 and ARM assembly good enough to reverse-engineer small binaries in a disassembler; stack overflows, format-string bugs and ROP chains you exploited yourself on 32- and 64-bit Linux, mitigations included; pwn.college's belts in program, system and software exploitation; the common web vulnerabilities found and exploited in PortSwigger's labs or a deliberately broken shop; and a fuzzer you built that finds crashes for you.

  • 17 sources
  • 163 HN submissions
  • 7,159 points
  • 2008–2026

Data pulled 2026-11-09

Why learn to break software? Because every bug class in this course is one you can write without noticing, and most security advice only makes sense once you’ve exploited the thing it protects against. After this track, a stack canary, ASLR and a parameterized query are defenses you’ve watched fail and hold, not rules you follow.

Read this first. Only attack what you own or what was built to be attacked: the wargames, virtual machines, labs and deliberately vulnerable apps in this course. Running these techniques against anyone else’s systems without written permission is illegal in most countries. Everything here runs on your own machine, in a VM, or on a site that invites it.

How to read the receipts.

  • Points are summed across every HN submission of the same URL. For books and series on one site (Reverse Engineering for Beginners, OverTheWire), that includes pages submitted on their own.
  • “Submitted N×” means HN rediscovered it N times.
  • Quotes come from the highest-ranked top-level comments in those threads, and a quote is sometimes a criticism. Quotes keep the commenter’s spelling.
  • Steps are ordered for learning, not by points.
  • Assumed background: a reader who writes C comfortably and is at home in a Linux shell. The operating systems course and the compilers course both help; the cryptography course is this one’s sibling for breaking ciphers.
  • Hardware. A laptop and a Linux virtual machine you can break. Several steps ship their own VM images.

Optional on-ramp: OverTheWire wargames (overthewire.org) · OverTheWire community

896 points, submitted 20× (2013–2026) · Free · shell

Start with Bandit, a wargame “aimed at absolute beginners”: you SSH into a server as level 0 and find the password for the next level, using the shell, file permissions, networking tools and a little scripting. The later games (Narnia, Behemoth, Vortex and others) go on to memory corruption.

HN grantjpowell, 2021 · comment

“I learned basic command line skills from the “Bandit” game[0]. Huge fan of the genre and it’s one of the things I always recommend new developers.”

HN mrmincent, 2023 · comment

“I recently completed a grad Cert in cyber security, and a large initial part of the practicals were to just go through otw and complete some of the lessons.”

Stage 1Read machine code

1.

Reverse Engineering for Beginners (beginners.re) · Dennis Yurichev

1,729 points, submitted 19× (2013–2024) · Free (libre) PDF, in many languages · x86, x64, ARM, MIPS

Also known as Understanding Assembly Language: what compilers turn C into, construct by construct, shown for several architectures side by side, then how to read it back. It’s over a thousand pages; don’t read it straight through. Read the chapters on the basics, then switch to Stage 2 and come back when a binary shows you something new.

HN xorpd, 2019 · comment

“Some very serious work was put in writing this book. … My general advice for beginners who want to get into reverse engineering is to read less books, and try to actually reverse engineer small and self contained programs.”

Alternative, for ARM: Maria Markstedter’s Azeria Labs tutorials (363 points across 12 submissions of the ARM pages): ARM assembly basics in seven parts, then ARM shellcode, stack overflows and an introduction to glibc heap exploitation. “As always, Azeria produces quality and informative articles! Goto place for learning about ARM techniques” (z3phyr, 2019 · comment)

Stage 2Memory corruption

Read first: Smashing the Stack for Fun and Profit · Aleph One, Phrack 49 (1996) · http://phrack.org/archives/issues/49/14.txt · 295 points, submitted 10× (2009–2026) · Free. The paper that taught a generation how a stack buffer overflow becomes code execution: the stack layout, overwriting the return address, writing shellcode. “A classic. The most referenced underground paper, ever!” (mahmud, 2009 · comment). HN’s caveat is its age: “A classic, but these days if you want to reproduce those bugs you need to build your code with -fno-stack-protector, enable executable stack, disable ASLR in the kernel, etc.” (f00zz, 2021 · comment). Those protections are what the next steps teach you to get around.

2.

Exploit Education: Phoenix (exploit.education) · Andrew Griffiths

239 points, submitted 1× (2024) · Free · C targets, exploits in any language

Graded exploitation levels in a virtual machine: Phoenix’s stack levels 0–6, format-string levels 0–4, heap levels 0–3, then network and “final” levels. It ships as qcow2 images with boot scripts, and the target binaries are built for amd64, i486 and arm64, so you can repeat a level on another architecture. Protostar, the older set with a similar structure, is still on the site, along with Nebula (Linux privilege escalation) and Fusion (with mitigations on). These used to live at exploit-exercises.com (comment).

3.

Nightmare (guyinatuxedo.github.io) · guyinatuxedo

254 points, submitted 5× (2020–2026) · Free · x86/x64, with Ghidra, GDB and pwntools

An intro to binary exploitation built from real CTF challenges, sorted by technique: reversing with Ghidra, debugging with GDB and scripting with pwntools first, then stack overflows, with ASLR and PIE, NX, stack canaries and RELRO introduced as each challenge needs them, then format strings, array indexing, bad seeds, symbolic execution with angr, return-oriented programming and the heap. Every challenge comes with the binary and a write-up; try it before reading the write-up.

HN galacticaactual, 2020 · comment

“The best thing one can do when setting out on the journey to learn reverse engineering is to avoid the temptation of trying to understand every line of assembly. Instead, try and gain an intuition around common patterns in various dialects (ARM / x86 / MIPS / etc).”

4.

ROP Emporium (ropemporium.com)

148 points, submitted 6× (2017–2024) · Free · x86, x86-64, ARMv5, MIPS

Eight challenges that teach return-oriented programming alone, starting from ret2win (“return here to win”): chaining calls with arguments, building a write primitive from gadgets, dealing with bad characters, stack pivoting, and the 32- versus 64-bit calling conventions. Each binary is small, so the only problem is the chain.

HN kvakil, 2018 · comment

“I’ve always found constructing ROP chains extremely satisfying, even more than regular exploit development.”

Read alongside: Ben Lynn’s 64-bit Linux Return-Oriented Programming (218 points, submitted 4×) walks one exploit from shellcode on an executable stack to a ROP chain once the stack isn’t executable. HN’s caveat is its conclusion: “Seems to be a fairly reasonable introduction to binary exploitation, but at the end it concludes with the dubious “NX is counterproductive”.” (saagarjha, 2021 · comment)

Alternative, on embedded: Microcorruption (104 points, submitted 12×), a CTF in the browser against a simulated MSP430 lock, written by Matasano with Square. “I wrote the kernel of Microcorruption (the emulator and the basic web interface) as a “hack night” challenge for our team at Matasano.” (tptacek, 2016 · comment). HN’s caveat: “it ramps up way too quickly with no introduction.” (chc4, 2016 · comment). Do it after step 3, not before.

Stage 3A full curriculum

5.

pwn.college (pwn.college) · Arizona State University

702 points, submitted 6× (2020–2026) · Free · in the browser or over SSH

The platform behind much of ASU’s security curriculum, open to anyone: dojos of modules, each a set of challenges you solve in a workspace in the browser. Start with the Getting Started dojos (Linux Luminarium, Computing 101), then earn the belts in order: Intro to Cybersecurity, Program Security, System Security and Software Exploitation. It repeats much of Stage 2 with more depth and adds the kernel, sandboxing and the heap. As of November 2026 the core belts hold more than 500 challenges.

HN knightzone, 2026 · comment

“We had this as a part of our reverse engineering and exploitation minor, amazing experience.”

Stage 4The web

6.

Web Security Academy (portswigger.net) · PortSwigger

183 points, submitted 6× (2019–2024) · Free (account required) · any browser, with Burp Suite Community Edition

The free training from the makers of Burp Suite: a topic page and live labs for each class of web vulnerability, from SQL injection, cross-site scripting, CSRF and access control through request smuggling, OAuth, web cache deception, NoSQL injection and attacks on LLM features, with learning paths through them. Every lab is a deliberately vulnerable site PortSwigger hosts for you to attack. HN’s main thread was about one Academy page, on OAuth.

HN mooreds, 2021 · comment

“Great post. I work in the space and am coming up to speed on some of the security issues.”

HN’s caveat came for the page’s title: “OAuth is an Authorization framework (Open Authorization) and is explicitly NOT for authentication.” (vwpolo3, 2021 · comment). The page is about what goes wrong when sites use it for login anyway.

Alternative, on your own machine: OWASP Juice Shop (202 points, submitted 3×), a deliberately insecure web shop in Node.js, Express and Angular with challenges across the OWASP Top Ten and beyond, and a score board that tracks what you’ve found. “There’s one thing reading about them in a book, it’s a whole other level getting students to find them.” (davidg109, 2023 · comment)

Also: HackerOne’s Hacker101 (192 points, submitted 2×), a free web security class of video lessons with its own CTF. HN’s caveat is from 2018, about its repository: “The repository seems to only include the website markdown content and not the vulnerable code examples.” (teebow, 2018 · comment). Use the site, as its creator recommended in the same thread.

Stage 5Let the computer find the bugs

7.

The Fuzzing Book (fuzzingbook.org) · Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, Christian Holler

584 points, submitted 15× (2018–2025) · Free · Python, runnable as Jupyter notebooks

Build fuzzers yourself, chapter by chapter, in Python: random inputs first, then code coverage, mutation-based and greybox fuzzing, grammars that generate valid inputs, symbolic and concolic fuzzing, and reducing a failing input to the smallest one that still fails. Every chapter runs in the browser or as a notebook.

HN sudahtigabulan, 2025 · comment

“It’s pretty cool how the site looks gorgeous and even has working menus without any JavaScript.”

Then run a real one: Michał Zalewski’s american fuzzy lop (292 points, submitted 18×), the coverage-guided fuzzer that made the approach mainstream; its technical whitepaper explains the design. “AFL is neat because it’s conceptually simple, but practically revolutionized fuzzing, especially for non-specialists.” (XMPPwocky, 2020 · comment). HN’s caveat: “AFL itself hasn’t seen updates in years.” (alltakendamned, 2020 · comment). Run AFL++, its maintained fork, against the programs you broke in Stage 2.

The reference shelf

Security Engineering, 3rd edition · Ross Anderson · https://www.cl.cam.ac.uk/~rja14/book.html · 405 points across 13 submissions (2008–2020) · Chapters free to download; $44 ebook from Wiley. The field beyond exploits: who the opponent is, psychology and usability, protocols, access control, economics, banking, physical security, side channels, network attack and defence. “This is the best security book I have ever read.” (zurn, 2013 · comment)

OpenSecurityTraining · https://p.ost2.fyi/ · 353 points across 11 submissions (2015–2026) · Free. Long courses on x86-64 assembly, reverse engineering, firmware and UEFI, and vulnerability research, recorded by practitioners. The original opensecuritytraining.info material continues as OpenSecurityTraining2. “All of the training at https://opensecuritytraining.info/Training.html is valuable.” (the_panopticon, 2023 · comment)

Before you hack anything real

Bug bounty programs (HackerOne, Bugcrowd and many companies’ own) are the legal way to test systems you don’t own: they publish a scope and the rules for reporting. Read the scope before you touch anything, stay inside it, and report what you find to the owner, not to the internet. Outside a program, get written permission first.

Editorial backlog

Checked against HN on 2026-11-09 (candidates_receipts.json), not used:

  • Reverse Engineering for Beginners workshop (Ophir Harpaz, begin.re, 432 points): the site returned 410 Gone on 2026-11-09.
  • LiveOverflow (159 points): its HN points are for an essay on the origin of “script kiddie”, not for the binary exploitation videos HN recommends in other threads. A candidate once those have receipts of their own.
  • picoCTF, pwnable.kr, crackmes.one, how2heap, RPISEC’s Modern Binary Exploitation: little or no HN discussion as stories (under 50 points each in a name search).

Method

  • Candidates came from a security topic pull with 30 terms over stories above 80 points: 48 candidates (phase1-stories/data/security_candidates.json), plus a name search on 2026-11-09 over 37 well-known resources (phase1-stories/data/gap_results_security.json), which found most of what the title search missed. Noise in the pull (“nightmare”, “shellcode” in unrelated stories) was skipped by hand.
  • URL keys were pinned before receipts: Azeria Labs’ site-wide total (2,262 points) is mostly an essay on deep work, so only its ARM and exploitation pages are counted (title filter); PortSwigger’s points are for Web Security Academy pages only.
  • Selection. 19 resources had receipts pulled; 17 are used here, chosen by hand for followability and sequence. Points were then totalled across every submission of each URL.
  • Quotes come from the top five top-level comments of the two best-scoring threads per resource, in HN’s ranked order via the Firebase API. Links go to the full comment. Every ID and quote is checked with phase1-stories/scripts/check_track.py.
  • Content and costs were checked on 2026-11-09 on each resource’s own page: the Bandit introduction, Exploit Education’s Phoenix levels, images and architectures, Nightmare’s table of contents, ROP Emporium’s challenges, pwn.college’s dojos and challenge counts, the Web Security Academy’s topics, Juice Shop’s stack, the Fuzzing Book’s chapters, AFL++, the free chapters and ebook price of Security Engineering, and OpenSecurityTraining2.
  • Data: tracks/security/receipts.json (resources used) and candidates_receipts.json (all 19 checked).