شروحات CTF
مرحبًا، أنا شون وأستمتع بحل مسائل CTF في وقت فراغي. منصبي الحالي
يجعلني أقوم بالكثير من استغلال الثنائيات (binary exploitation) والهندسة
العكسية للبرمجيات، لذلك أميل إلى التركيز على هاتين الفئتين. معظم الشروحات
التي أراها على الإنترنت سيئة، وآمل أن تشرح هذه الشروحات بعض المفاهيم
الأساسية بشكل أفضل.
في جميع حلولي، أبذل قصارى جهدي لتضمين حل قابل لإعادة الإنتاج مكتوب
باستخدام pwntools. الأمر لا يتعلق بالـ flags، بل بالرحلة التي أوصلتنا
إلى الـ flag.
آمل ألا يفسد هذا مع مرور الوقت كما يفسد الحليب، لكنني حاولت أيضًا تقديم بعض
شروحات الفيديو لبعض مسائل CTF هذه. يمكنكم مشاهدتها على
YouTube.
فيما يلي قائمة بمواضيع Unix Access الشائعة وتحديات CTF
التي تتعلق بها.
معرفة Unix Access
فئات الثغرات
إظهار القدرة على استغلال فئات الثغرات
- كتابة شيل كود (shellcode) يعمل من الصفر وعرض جميع خطوات كتابة
الشيل كود:
- تجاوز سعة المخزن المؤقت على المكدس مع وبدون التخفيفات التالية: عشوائية
تخطيط مساحة العنوان (ASLR)، الذاكرة غير القابلة للتنفيذ (NX)، وحراس
المكدس:
- تجاوز سعة المخزن المؤقت على الكومة باستخدام تهيئة الكومة (heap grooming) وكائنات تحتوي على مؤشرات دوال:
- تجاوز سعة المخزن المؤقت على الكومة عبر إفساد هياكل بيانات الكومة:
- استخدام بعد التحرير (UAF) مع كائنات تحتوي على مؤشرات دوال:
- استخدام بعد التحرير (UAF) مع كائنات تتيح بدائية قراءة/كتابة عشوائية:
- ثغرات الخلط بين أنواع البيانات (type confusion)
- ثغرات سلسلة التنسيق (format string) لبدائية قراءة/كتابة عشوائية:
- كيفية استخدام المتغيرات غير المهيأة للاستغلال:
إظهار القدرة على تنفيذ بدائيات الاستغلال
- بدائية كتابة عشوائية:
- بدائية كتابة نسبية:
- بدائية قراءة عشوائية:
- كيف يمكن ربط البدائيات معًا لبناء استغلال
- كيف يمكن استخدام بدائية الكتابة لرفع الصلاحيات/تنفيذ كود
عشوائي:
وصف الغرض والبنية لهياكل الربط ELF التالية وكيف يمكن إساءة استخدامها في استغلال الثنائيات
- جدول الربط الإجرائي (PLT):
- جدول الإزاحة العام (GOT):
وصف أوضاع إعادة التوطين الديناميكية التالية من حيث تفاعل بنية بيانات PLT/GOT، وكيف تختلف بدائيات الاستغلال بينها
إظهار القدرة على تنفيذ ROP/JOP من أجل
- إيجاد أدوات (gadgets) ROP/JOP:
- استدعاء دوال libc واستدعاءات النظام:
- ربط الأدوات (gadgets) معًا لتنفيذ كود:
- تنفيذ شيل كود عشوائي
وصف الغرض من تخفيفات الاستغلال وكيفية تطبيقها
- ASLR
- منع تنفيذ البيانات (DEP)/NX:
- الملفات التنفيذية المستقلة عن العنوان (PIEs)
- كيف تؤثر PIEs على الاستغلال
- حراس المكدس (stack canaries):
- فك الارتباط الآمن للقوائم
الهندسة العكسية للبرمجيات
المقارنة والتباين بين تقنيات وحالات استخدام
- الهندسة العكسية الساكنة:
- الهندسة العكسية الديناميكية:
إظهار الإلمام باستخدام الأنواع التالية من الأدوات لإجراء الهندسة العكسية الساكنة والديناميكية
- أدوات التفكيك الساكنة
- مصححات الأخطاء (debuggers)
- تقنيات الأتمتة باستخدام الأدوات المذكورة أعلاه
تقنيات الـ Fuzzing
- تقنيات الـ Fuzzing الأعمى (dumb fuzzing)
- الـ Fuzzing القائم على تغطية الكود
- التنفيذ الرمزي (symbolic execution)
منشورات مدونات CTF التي أجدها مفيدة