Binary exploitation is the process of manipulating programs to do what we want them to do. By exploiting a program, we turn it into a weird machine that provides unintended features.

Though binary exploitation and exploit development are getting harder these days due to more sophisticated mitigations (not that this is a bad thing), keep in mind that software is also getting more complex and as such is more prone to error. The adoption of innovative mitigations is always slower than the pace of software development, so we can always to expect there to be something to exploit :).

Notes

These are entry notes to each respective topic.

Basic knowledge

Memory Layout

Common Attacks

Tools

Learn

Background Knowledge

Exploitation techniques

Further learning

Practice

Roadmaps and Other Resources