pwncollege
DojosLeaderboardCommunity
Back to computing-101

The Stack, Revisited

computing-101
0/9 challenges completed

Back when you first met the stack, it was just some data the kernel had set up for you: argc, argv, a few pointers. Now that you've written your own functions, made your own calls, and seen rsp move in response to push and pop, it's time to revisit the stack with sharper eyes. How does it actually get laid out? Why does it "grow downwards," and what does that mean for the data you can reach? And how does the way your program was launched shape the addresses of everything on it?

1
Reaching Into the Caller's Frame
2
Loading Stale Stack Data
3
Stealing Stale Stack Data
4
Reserving Your Own Frame
5
Using Your Own Frame
6
Environment Variables on the Stack
7
Aligning the Stack Through the Environment
8
Aligning the Stack Through GDB
9
Aligning the Stack Through GDB, Generalized