Pivoting Around Memory
When exploiting a program, there's four primary regions of memory that matter to us: * The program itself * The stack * libc * The heap All of these may be at randomized addresses, but a complex exploit will often need to interact with each of them. So how can we figure