Pwntools

O que é

Pwntools é um framework para CTFs e desenvolvimento de exploits, escrito em python, com o objetivo principal de agilizar prototipagem e desenvolvimento, mas não tão útil assim caso seja algo mais "profissional".

Instalando

Instalar o pwntools é simples. O requisito básico é ter o python3 e o pip (referente ao python 3) instalado. Caso esteja usando alguma distribuição debian based (ubuntu, kali, debian), os comandos são os seguintes:

apt-get update
apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip

E, para instalar o pwntools em si:

python3 -m pip install --upgrade pwntools

Utilização Básica

Para utilizar o pwntools, primeiro o importamos com from pwn import * e então utilizamos as suas funções como seria feito em python usualmente, por exemplo no código abaixo:

from pwn import *

# Cria uma comunicação com um processo
p = process('./communication')

while True:
    # Recebe uma linha no formato byte array
    line = p.recvline()
    
    # Decoda-se essa linha em UTF-8 (transformando em string)
    line = line.decode("UTF-8")
    print(line)
    
    # Forma uma lista baseada nessa linha, dividindo no ' '
    line = line.split(' ')
    print(line)

    result = int(line[0]) * int(line[2])
    
    # Envia uma linha com o resultado obtido
    # No formato byte array (encodado)
    p.sendline(str(result).encode())

Diferentes Módulos

O pwntools tem vários módulos para diferentes funções, no vídeo sobre comunicações focamos principalmente no módulo Tubes, que permite interação entre processos e algumas ferramentas de redes, mas existem outros que são tão utilizados quanto esse.

Tubes

Módulo relacionado a comunicação e ferramentas de redes/interação entre processos.

Os principais comandos são:

Utility

Utilitários no geral, como manipulação de bytes, hashing e manipulação de arquivos

Manipulação de números/bytes

Arquivos

Hashing e Encoding

Context

O módulo context serve para mudar especificações de arquitetura, log, timeout, endianness dos arquivos... que tal dar uma olhada nele?

Outros

Outros módulos que não vamos falar sobre aqui estão na documentação oficial (e no tutorial) nos links extras.

A documentação do pwntools não é muito clara apesar de ter bastante coisa, mas o repositório pwntools-tutorial funciona como uma boa referência para a biblioteca.

Last updated

Was this helpful?