Exploit Development with pwntools: A Practical Cheatsheet

🤖 AI Prompts Cheatsheet

Priya Nair — Prompt Engineering Expert

What is pwntools?

pwntools is a Python library designed for rapid exploitation of binary applications. It provides a set of utilities that make it easy to interact with processes and perform tasks necessary for successful exploitation.

Installation

To install pwntools, you need Python installed on your machine. Use pip to install it:

pip install pwntools

Basic Syntax

To get started, you will typically import pwntools in your Python script:

from pwn import *

Discovery

Finding Remote Services

To find remote services and interact with them, use:

remote("", )

Scanning

Checking for Debugging Flags

Check for debugging symbols in a binary:

checksec("")

Exploitation

Creating Payloads

Create a simple payload exploiting a buffer overflow:

payload = b'A' * 100

Sending Payloads

Send your payload to the remote service:

s.send(payload)

Analysis

Interacting with Processes

Interact with a process locally:

p = process("")

Evasion

Bypass Protections

Use environment variables to bypass ASLR:

os.environ["LD_PRELOAD"] = ""

Reporting

Generate a Report

Compile findings and generate an exploit report:

report = "Vulnerabilities found: ..."

Quick Reference Table

Function Description
process() Creates a process to interact with
remote() Connects to a remote service
checksec() Checks binary security properties

Pro Tips

  • Use GDB Integration: Debug binaries live using gdb.debug(binary) to analyze runtime behaviors.
  • Leveraging ROP: Utilize ROP() functions in pwntools to easily build return-oriented programming payloads.

Real-World Examples

Here’s an example of a complete exploit:

# Import libraries
from pwn import *

# Start process
p = process('./vulnerable_binary')

# Create payload
payload = b'A' * 100 + p32(0xdeadbeef)

# Send payload
p.send(payload)

# Interact
p.interactive()