PwnTools

PwnTools

A PwnTools é uma biblioteca python que permite a criação de scripts que ajudam na resolução de desafios CTFs, automatização, análise de binários e desenvolvimento de exploits.

Nesse documento, será apresentado algumas das principais funções disponíveis da biblioteca e alguns exemplos de uso.

Instalação

Utilizando pip:

pip3 install pwntools

Após instalação, basta apenas colocar a seguinte linha para importar a biblioteca:

from pwn import *

Documentação

Nesta seção, serão apresentadas as principais funções da biblioteca.

Conectar a processos

É possível interagir com processos locais ou remotos:

# Cria um processo do binário vuln
p = process("./vuln")

# Cria um processo remoto. Exemplo: Se o servidor for "nc chall.ctf 1234"
p = remote("chall.ctf", 1234)

Ambiente e contexto

É possível definir o ambiente que executará o processo.

Codificação e utilidades

Há algumas funções de codificação, decodificação e utilidade gerais

Assembly

É possível escrever código assembly para enviar para o processo. Útil para exploits como shellcode.

ELFs, Strings e símbolos

É possível encontrar diversas informações a respeito do binário, como endereços de algumas funções, de string específicas, etc.

Return Oriented Programming (ROP)

É possível instanciar um analisador ROP.

SROP

É possível criar frame para exploits de SROP.

Format String Exploits

É possível utilizar funções prontas para realizar exploits de format string.

Carregar libc

Para garantir que a libc carregada no script seja a libc disponibilizada pelo desafio, você pode usar o seguinte script

Referências

pwntools cheatsheet: https://gist.github.com/anvbis/64907e4f90974c4bdd930baeb705dedf#program-interaction

Documentação pwntools: https://docs.pwntools.com/en/stable/intro.html#making-connections

Pwninit: https://github.com/io12/pwninit

Atualizado