تخطَّ إلى المحتوى

pwndbg - ورقة غش تطوير الاستغلال GDB/LLDB

pwndbg - ورقة غش تطوير الاستغلال GDB/LLDB

pwndbg (ينطق “pwn-dee-bee-gee”) هي إضافة Python تحمل في GDB — والآن في LLDB — لجعل تطوير الاستغلال والهندسة العكسية أقل ألماً كثيراً. إنها تضيف فحص الكومة والبحث عن gadgets ROP والمؤشرات “التلسكوبية” للسجلات والمكدس والمؤشرات وعرض السياق الذكي عند كل توقف وعشرات الأوامر التي لم توفرها المصححات الأساسية. إنها خليفة روحية لـ PEDA وأخت لـ GEF.

التثبيت

الطريقةالأمر
Setup script (موصى به)git clone https://github.com/pwndbg/pwndbg && cd pwndbg && ./setup.sh
Nixnix profile install github:pwndbg/pwndbg
Arch (AUR)yay -S pwndbg
تحميل GDB اليدويأضف source /path/to/pwndbg/gdbinit.py إلى ~/.gdbinit
LLDBأضف command script import /path/to/pwndbg/lldbinit.py إلى ~/.lldbinit
التحققابدأ gdb — يجب أن ترى موجه pwndbg>

بدء جلسة عمل

الأمرالوصف
gdb ./binaryتحميل ملف ثنائي تحت pwndbg
gdb -p PIDإرفاق بعملية قيد التشغيل
gdb ./binary coreفتح صورة core dump لتحليل ما بعد الوفاة
startتشغيل والتوقف في main
entryتشغيل والتوقف في نقطة دخول ELF
r ARGSتشغيل مع الحجج
startiتوقف عند أول تعليمة تماماً

السياق والملاحة

الأمرالوصف
contextإعادة رسم السياق الكامل (السجلات والتفكيك والمكدس والتتبع الخلفي)
context regإظهار جزء السجلات فقط
ctx-watch EXPRإضافة تعبير إلى جزء مراقبة السياق
nextcallخطوة حتى تعليمة call التالية
nextretخطوة حتى ret التالية
stepuntilasm movخطوة حتى mnemonic معينة
xinfo ADDRاشرح ما يرسمه العنوان (أي تعيين/قسم)

فحص الذاكرة

الأمرالوصف
telescope ADDRإلغاء الإشارة و”تلسكوب” سلسلة من المؤشرات
telescope $sp 20تلسكوب 20 إدخال من مؤشر المكدس
hexdump ADDRكمب Hex+ASCII (الأمر الذي لم يملكه GDB أبداً)
vmmapإظهار خريطة الذاكرة الافتراضية للعملية
vmmap libcتصفية خريطة الذاكرة حسب الاسم
search -t string "PASS"البحث في الذاكرة عن نص
search -t bytes 0xdeadbeefالبحث في الذاكرة عن نمط بايت
distance ADDR1 ADDR2مسافة البايت بين عنوانين
p2p MAP1 MAP2ابحث عن سلاسل المؤشرات بين تعيينين

تحليل الكومة (glibc)

الأمرالوصف
heapقائمة أجزاء الكومة
binsإظهار جميع الـ bins المجانية (سريعة، tcache، صغيرة، كبيرة، غير مصنفة)
tcacheفحص tcache
fastbinsإظهار محتوى fastbin
malloc_chunk ADDRفك تشفير رأس جزء في العنوان
top_chunkإظهار الجزء العلوي (البرية)
vis_heap_chunksتصور تخطيط الكومة بألوان
find_fake_fast ADDRالبحث عن أهداف fastbin fake-chunk

تطوير الاستغلال

الأمرالوصف
cyclic 200إنشاء نمط De Bruijn (محدد الموضع)
cyclic -l 0x6161616cالبحث عن موضع القيمة في النمط
rop --grep "pop rdi"البحث عن gadgets ROP
ropgadgetطباعة gadgets (تكامل ROPgadget)
checksecإظهار تخفيفات الملف الثنائي (NX، PIE، RELRO، canary)
gotإظهار الـ GOT والعناوين المحللة
pltإظهار PLT
aslrإظهار/تبديل ASLR للمصحح
canaryإظهار قيمة canary المكدس الحالية

نقاط الفحص والمراقبة

الأمرالوصف
b *0x401136الفحص في عنوان مطلق
b mainالفحص في رمز
breakrva 0x1136فحص في RVA (مفيد مع PIE)
watch GLOBALفحص عند تغيير قيمة
rwatch ADDRفحص عند وصول القراءة
ignore N COUNTتجاهل نقطة فحص N مرات

سير العمل الشائع

# ابحث عن الموضع الدقيق للكتابة فوق عنوان الإرجاع المحفوظ
pwndbg> cyclic 200
pwndbg> r            # الصق النمط، انهار
pwndbg> cyclic -l $rsp   # أبلغ عن الموضع

# فحص التخفيفات، ثم ابحث عن سلسلة ROP صديقة one-gadget
pwndbg> checksec
pwndbg> rop --grep "pop rdi"

# امشِ في استخدام الكومة بعد التحرير
pwndbg> vis_heap_chunks
pwndbg> bins

pwndbg مقابل GEF مقابل PEDA

الميزةpwndbgGEFPEDA
دعم GDBنعمنعمنعم
دعم LLDBنعملالا
تحليل الكومةعميق (glibc)جيدمحدود
أدوات ROPمدمجمدمجمدمج
التطور النشطنعمنعمحد أدنى

الموارد