0Pricing
Ethical Hacking Academy · درس

الاختبار العشوائي بحثًا عن الأعطال

العثور على الإزاحة

الاختبار العشوائي بحثًا عن الأعطال درس مجاني في Ethical Hacking Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ethical Hacking Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ethical Hacking Academy 4 دروس في المجموع.

ما هو اختبار Fuzzing؟

يتمثل Fuzzing في إرسال إدخال مشوه أو كبير الحجم إلى برنامج لتحفيز سلوك غير متوقع، وخاصةً حالات الانهيار. وغالبًا ما يشير الانهيار إلى وجود خطأ في تلف الذاكرة.

في حالات تجاوز سعة المخزن المؤقت، يتمثل الهدف الأول في جعل الهدف ينهار، للتأكد من وجود تجاوز للسعة.

سير العمل

يتكون سير العمل التقليدي للاستغلال من الخطوات التالية:

  • استخدم Fuzz لإسقاط البرنامج.
  • اعثر على الإزاحة الدقيقة إلى عنوان العودة.
  • تحكم في EIP.
  • أعد التوجيه إلى shellcode.

يتناول هذا الدرس الخطوتين الأوليين.

إرفاق مصحح الأخطاء

لمراقبة حالات الانهيار، أرفق مصحح أخطاء، مثل Immunity Debugger أو x64dbg على Windows، أو GDB على Linux، بالهدف.

عندما ينهار البرنامج، يعرض مصحح الأخطاء حالة السجلات، وخاصةً EIP، الذي يوضح ما إذا كنا قد كتبنا فوق عنوان العودة.

إرسال إدخال متزايد الحجم

يرسل مختبر Fuzzing بسيط سلاسل نصية متزايدة الطول حتى ينهار البرنامج. ومن نقاط البداية الشائعة إرسال عدد كبير من المحارف 'A' ‏(0x41).

إذا عرض EIP القيمة 41414141 بعد الانهيار، فقد أكدت قدرتك على التحكم في عنوان العودة.

python -c 'print("A"*2000)' | ./vuln

تأكيد الانهيار

عندما ينهار التطبيق وتساوي قيمة EIP 41414141، فهذا يعني أن التجاوز وصل إلى عنوان العودة المحفوظ.

لكنكم لا تعرفون بعد عدد البايتات التي تسبق EIP بالضبط. فإرسال البايت نفسه بالكامل يخبركم بأن EIP قابل للتحكم، لكنه لا يحدد موضعه.

العثور على الإزاحة: الأنماط الدورية

للعثور على الإزاحة الدقيقة، أرسل نمطًا فريدًا غير متكرر بدلًا من إرسال محارف 'A' فقط. تكون كل نافذة من 4 بايتات مميزة، ولذلك تحدد القيمة التي تصل إلى EIP الإزاحة.

يوفر Metasploit الأداة pattern_create.rb.

msf-pattern_create -l 2000

قراءة الإزاحة

بعد حدوث الانهيار باستخدام النمط، دوّن القيمة الموجودة في EIP. مررها إلى pattern_offset.rb، وستعيد الأداة العدد الدقيق للبايتات التي تسبق EIP.

تمثل هذه الإزاحة حجم الحشو الذي يسبق بايتات عنوان العودة.

msf-pattern_offset -l 2000 -q 39654138

التحقق من الإزاحة

تحقق دائمًا من النتيجة. أنشئ إدخالًا يتكون من offset بايتات من 'A' متبوعة بأربع بايتات من 'B' ‏(0x42). إذا أصبحت قيمة EIP هي 42424242، فالإزاحة دقيقة.

يمنع هذا التأكيد إضاعة ساعات في تصحيح خطأ ناتج عن زيادة أو نقص بضعة بايتات لاحقًا.

"A"*offset + "B"*4   # EIP should become 42424242

تحديد ESP

بعد التحكم في EIP، دوّن أيضًا الموضع الذي يشير إليه ESP لحظة الانهيار. فعادةً ما يشير ESP إلى الموضع الذي يلي عنوان العودة الذي تمت الكتابة فوقه، داخل المخزن المؤقت المتبقي.

ستضع shellcode لاحقًا في تلك المساحة.

مراجعة الأدوات

تشمل أدوات Fuzzing والأنماط المفيدة ما يلي:

  • Spike وboofuzz: مختبرات Fuzzing لبروتوكولات الشبكة.
  • pattern_create / pattern_offset: تحديد إزاحة EIP.
  • mona.py في Immunity: أتمتة مهام النمط والإزاحة والمحارف غير الصالحة.
!mona pattern_create 2000

إمكانية إعادة الإنتاج مهمة

يجب أن يكون الانهيار المفيد قابلًا لإعادة الإنتاج. احفظ الإدخال الدقيق الذي يسببه، ثم أعد تشغيله من حالة نظيفة للتأكد من ثبات الإزاحة.

غالبًا ما تعني حالات الانهيار غير المتسقة أن الخطأ ليس تجاوزًا نظيفًا لسعة المكدس، أو أن أحد الشروط، مثل التوقيت أو الطول أو المحتوى، يتغير بين عمليات التشغيل.

تحقق سريع

تذكّر سبب تفوق النمط الدوري على سلسلة من البايتات المتطابقة.

مراجعة

أصبحت الآن تعرف كيفية العثور على إزاحة الانهيار:

  • استخدم Fuzz مع إدخال متزايد الحجم لتحفيز الانهيار؛ وأكد ذلك بظهور 41414141 في EIP.
  • استخدم نمطًا دوريًا مع pattern_create / pattern_offset للعثور على الإزاحة الدقيقة.
  • تحقق باستخدام الحشو متبوعًا بأربع بايتات من 'B' ‏(42424242).
  • دوّن الموضع الذي يشير إليه ESP لاستخدامه لاحقًا في وضع shellcode.

ستتحكم في الخطوة التالية تحكمًا كاملًا في EIP، ثم تعيد توجيه التنفيذ.

الأسئلة الشائعة

هل درس «الاختبار العشوائي بحثًا عن الأعطال» مجاني؟

نعم — نص درس «الاختبار العشوائي بحثًا عن الأعطال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ethical Hacking Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ethical Hacking Academy 4 دروس في المجموع.

ماذا ستتعلم في «الاختبار العشوائي بحثًا عن الأعطال»؟

العثور على الإزاحة تتمرن على Ethical Hacking Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ethical Hacking Academy؟

لا تُشترط خبرة سابقة. Ethical Hacking Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الاختبار العشوائي بحثًا عن الأعطال»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ethical Hacking Academy هذا؟

نعم. كل درس في Ethical Hacking Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الذاكرة والمكدس
  2. الاختبار العشوائي بحثًا عن الأعطال
  3. التحكم في EIP
  4. Shellcode والاستغلال
← العودة إلى Ethical Hacking Academy