CS 69.19/269

Basics of Cyber Exploitation

John Berry, Sergey Bratus, Winter 2025

Syllabus

Preliminary syllabus

The class is currently scheduled for the 3B slot.

TAs

Mohamed Dawood

Jonah Weinbaum

Office hours: TBD

What this class is about

There is one undeniable fact about computing systems we build today: no matter how hard we try, they cast a long shadow of unintended, unexpected, yet reproducible behaviors. The practice of finding out and programming these behaviors is called exploitation. We will study the patterns and principles of this practice.

Cyber exploitation is an essential discipline for studying what any given system really is and does, as opposed to what people believe it does, and how it can be programmed in unexpected ways. Initially thought to be a mere mix of clever and not-so-clever tricks that second-guessed programmer mistakes, cyber exploitation evolved into a discipline of its own. We will cover its founding examples.

Class materials

To join the class, join the class’ “Dojo” at pwn.college

We will be using Discord for our X hour and other communications. If you don’t have a Discord account or want to use a separate account for this class, please create an account and join our server with this link.

Week 1: Please complete the pwn.college assignments on the Unix shell and OS in the class dojo above.

A Tiny Guide to the x86 Assembly

Depending on your learning style, you may find Chapters 1-3 of the following very helpful (skip 3.4) Introduction to x86 platforms and x86 assembly language

Intel’s instruction manuals

Week 2: Assembly reading and writing practice

x86 assemply slides – Slides from the 1/9/25 class.

x86 assembly cheatsheet – x86 assembly hints (32 bit version)

GDB debugging cheatsheet – Basic GDB debugger commands

GDB dashboard – Configurable, auto-updated register and assembly displays for GDB

Historic inspirations

Once upon a time, there was a series of puzzles for aspiring hackers looking to understand memory corruption in C programs that ran the Internet at that time (and largely still do). This series was exquisitely crafted by Gerardo Richarte (gera), a legendary researcher whose ideas described in short posts to the Bugtraq mailing list had a way of being rediscovered by academics 7–10 years later, in full-length papers.

These exercises were known as ABOs, Advanced Buffer Overflows. They now live at https://github.com/gerasdf/InsecureProgramming.