For exploit development, it is necessary to have a solid grasp of Assembly and C/C++. Maybe also Python. I provided some recommendations on my coding resources page on how to learn them.

Yes, companies like Microsoft have been moving from memory-unsafe languages like C/C++ for critical systems software to memory-safe languages like Rust. However, such migrations take a long time to implement and a significant portion of existing and new third-party codebases will remain in C/C++. And while there have been some recent discussions and rumors about rewriting the Linux kernel in Rust, significant actions haven’t been taken yet. I am not even mentioning that there are plenty of bugs that do not involve memory corruption. In other words: there will still be plenty of juicy targets to attack.

Afterwards, one can get started with:

Books

They can be a bit dated but introduce the topic well

Formal Trainings

We all need a guru’s help sometimes

Websites

Learning resources:

Training/Practice Challenges:

  • RET2 WarGames: A well designed binary exploitation training course with labs and one of the best resources out there for newbies and the more advanced alike. Students and educational institutions can get it at a significantly discounted price
  • exploit.education: A well-designed set of binary exploitation teaching challenges with increasingly-progressing difficulty levels
  • ROP Emporium
  • Nightmare

Tools

Comments