Step B.2: Exercise 1
Ol_bb_steps [5 pts]
Resources
- See our buffer overflow tutorial video
- https://www.cs.uaf.ed u/2017/fa 11/cs301/lecture/09_11 _reg isters.htm I
- GDB cheatsheet
Challenge Instructions
This challenge is meant to be a soft introduction to using GDB; however, you are also welcome to calculate the values by hand in reading the source code (fiag.c ) if you so choose. We recommend using GDB if you have never done so before because of how extensively the remaining project exercises engage the tool.
We can begin by manually starting GDB and hooking it to the flag binary process like so:
cd —/project/Ol_bb_steps/ gdb flag
We have extended the default vanilla GDB tool with pwndbg in order to help with things like readability and utility. If you were instead to invoke the binary into GDB with e.py ( python3 e.py dbg ), you’d observe GDB open as a separate window (see FAQ for folks opting to SSH into the VM). Either
https://g ith u b.gatech .ed u/pag es/cs6035-tool s/cs6035-tools.g ith u b. io/P rojects/B i n Exp/Ol_i ntroto_asse m b ly. htm I 4/8
2/9/26, 12:08 AM Stage B – Intro to Assembly — (2 flags) I CS 6035
way, the pwndbg prompt will wait for you to enter a command; let’s start by setting a breakpoint for the debugger to catch on:
pwndbg> b main
The above sets a breakpoint at the start of the main() function (Note: as a courtesy, all of your e . py files have this configured by default when you invoke the dbg option). Recall that all C-based programs start execution at main(), so we can reliably expect such a function to be present in all of our binaries for this project. Let’s now start the flag binary by running it:
pwndbg> r
Within the GDB interface window, you’ll likely see a flurry of text/blocks showing various things like stack traces, register printouts, code prints, and more. GDB will pause the process’ execution at the start of main() (where we set our breakpoint) and await for the next command.



