ROP Emporium contains 7 challenges (32-bit and 64-bit versions) in somewhat increasing difficulty to teach ROP basics.
This repo contains python scripts that either print the flag or result in a shell, pretty much all of the challenges can getyou a shell if you really want to.
- pwntools
- A functioning brain.
- Get function names:
nm binary | grep ' t '
- Get GOT entries:
readelf --relocs binary
- Get PLT entries:
objdump -M intel -dj .plt binary
- Get strings:
strings binary
or the much better alternativerabin2 -z binary
- Virtual address space layout:
vmmap
in PEDA after starting program, otherwise other modules aren't mapped yet. - Finding gadgets:
Note: You probably want to utilize the pwntools support to programmatically get GOT/PLT/segment data/function addresses using. It's easier to tell people than to use it myself..
If some solutions are unclear/confusing/total shit, go ahead and submit a PR.