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 arrow-up-rightsobre 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 nelearrow-up-right?

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 arrow-up-rightdo pwntools não é muito clara apesar de ter bastante coisa, mas o repositório pwntools-tutorialarrow-up-right funciona como uma boa referência para a biblioteca.

Last updated