From c532c6aba161b7799bfedeba3b47a3f006f0f64f Mon Sep 17 00:00:00 2001 From: Lucca Christiansen <60967674+luccaflower@users.noreply.github.com> Date: Thu, 17 Oct 2024 09:45:18 +0200 Subject: [PATCH] Add relevant CS:APP labs to the x86 section of the extended approach. --- coursepages/ostep/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md index ab1eaf0..5f11ac9 100644 --- a/coursepages/ostep/README.md +++ b/coursepages/ostep/README.md @@ -162,6 +162,12 @@ The easiest way to do that is by watching a subset of the lectures from the *Com * [Machine-Level Programming V: Advanced Topics](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=3f0bf9ca-d640-4798-b91a-73aed656a10a) * [Linking](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=0aef84fc-a53b-49c6-bb43-14cb2b175249) +Further more, it is recommened to do the following labs. These labs are meant to teach you how to work with assembly: +* **Bomb Lab**: [Writeup](http://csapp.cs.cmu.edu/3e/bomblab.pdf), [self-study handout](https://csapp.cs.cmu.edu/3e/bomb.tar). + > A "binary bomb" is a program provided to students as an object code file. When run, it prompts the user to type in 6 different strings. If any of these is incorrect, the bomb "explodes," printing an error message and logging the event on a grading server. Students must "defuse" their own unique bomb by disassembling and reverse engineering the program to determine what the 6 strings should be. The lab teaches students to understand assembly language, and also forces them to learn how to use a debugger. It's also great fun. A legendary lab among the CMU undergrads. +* **Attack Lab**: [Writeup](http://csapp.cs.cmu.edu/3e/attacklab.pdf), [self-study handout](https://csapp.cs.cmu.edu/3e/target1.tar). + > Students are given a pair of unique custom-generated x86-64 binary executables, called targets, that have buffer overflow bugs. One target is vulnerable to code injection attacks. The other is vulnerable to return-oriented programming attacks. Students are asked to modify the behavior of the targets by developing exploits based on either code injection or return-oriented programming. This lab teaches the students about the stack discipline and teaches them about the danger of writing code that is vulnerable to buffer overflow attacks. **Note:** run the targets with the -q flag to prevent them from trying to contact a non-existent grading server. + Additional (***optional***) resources include: * [CPU Registers x86](https://wiki.osdev.org/CPU_Registers_x86): good for looking up specific registers. * [*PC Assembly Language*](https://pdos.csail.mit.edu/6.828/2018/readings/pcasm-book.pdf): a short book on x86 assembly.