الدرس اﻷول:مدخل لثغرات Buffer Overflow


استكماﻻ لدروس تعليم إختبار اﻹختراق،سننتقل اليوم إلى ثغرات تختص بالبرامج و منها سنتطرق إلى الهندسة العكسية و بالتالي سنأخذ نظرة بسيطة عن هذا العالم الواسع جدا.
ببساطة كبيرة،فإن ثغرات فيض الذاكرة هي تنتج عندما يتم ملئ مساحة من الذاكرة فقدر من البيانات هو أكبر من استطاعتها على التحمل.
سنأخذ مثاﻻ بسيطا عن ثغرات الحقن و ذلك عن طريق مثال بسيط،دعونا نقرأ هذا الكود البسيط و المبرمج عن طريق لغة سي




في هذا المثال البرمجي،قمنا بإنشاء دالة تحت إسم GetInput و التي تتلقى مدخلات من المستخدم باستخدام الدالة gets و التي ﻻ تقوم بالتحقق من مدخلات المستخدم و بالتالي فإنه باﻹمكان زيادة المدخلات عن القيمة المحددة.
في المثال السابق قمنا بإنشاء متغير تحت إسم buffer و نوعه char و الحجم اﻹفتراضي له هو 8،قمنا بتلقي المدخلات من المستخدم و الذي نتوقع منه أن يقوم بإدخال نص من 8 حروف(كمثال)،في المرة اﻷولى أدخل 6 حروف(كل شيء على ما يرام)،في المرة الثانية أدخل 8 حروف(وصل المتغير أو حجم الذاكرة المحجوزة إلى حده اﻷقصى)،ادخل المستخدم في المرة الثالثة 10 حروف،هنا سيأخذ البرنامج وقتا أكبر في اﻹستجابة و لكنه في اﻷخير سيتجيب،لو رفع المستخدم حجم المدخلات إلى 20 حرفا فإن البرنامج سيتوقف عن العمل و يظهر خطأ سنتعرف عليه في الدرس المقبل و الذي سيكون تطبيقيا.

فكرة مشاكل فيض الذاكرة يمكن تشبيهها بكأس الماء،مثلا نجلب كأسا فارغا سعته 250 ML،و نبدأ في سكب الماء في الكأس،نقوم بسكب 100 ML،بعدها 50 ML بعدها 100 ML أخرى،هنا وصلنا إلى الحد الأقصى و هو 250 ML و بالتالي لو أضفنا 20 ML أخرى سيتفيض إلى خارج الكأس.
في عالم البرمجة المتغير هو الكأس و البيانات هي الماء.
أتمنى أن تكونوا قد استوعبتم الفكرة،نلتقي في الدرس المقبل مع الجانب التطبيقي...دمتم بود،سلام.

تعليقات

  1. أزال المؤلف هذا التعليق.

    ردحذف
  2. شكرا اخي على هذا الشرح الرائع ,, ,, اذكر انك في درس من الدروس اعتقد في احد دروس الاسمبلي قلت انك ﻻ تجيد لغة الـ C هل تعلمتها بهذه السرعة ؟ ارجوك انا اعرف البرمجة بلغة vb.net ولكنها لغة بسيطة جدا وليست قوية مثل البايثون و الـ C ارجوك اعطني بعض النصائح لتعلم اللغات القوية ؟ تقبلني طالبك. اخاك عبدالله . وشكرا

    ردحذف
    الردود
    1. العفو أخي عبد الله،نعم و لحد اﻵن ﻻ اتقن البرمجة عن طريق لغة C،منذ ذلك الوقت تعلمت اﻷساسيات فقط التي ستساعدني في فهم،اكتشاف و استغلال ثغرات فيض الذاكرة،المشكل ليس في عدم تعلمها،المشكل يمكن في اﻹرادة لتعلم شيء.
      في الحقيقة أخي عبد الله،لست استاذا حتى تكون طالبا عندي،فأنا مجرد شاب يحاول نشر ما تعلمه فقط.حاول تعلم بايثون فهي أسهل و أكثر إمتاعا

      حذف
  3. شكرا لك عبدالمجيد

    بالرغم من انني شاهدت عدة شروحات عملية لثغرة buffer over flow بالعربي والانجليزي فمنهم من كان يستخدم olly ومنهم من استخدم immunity debugger لكن لازالت مبهمة بعض الشي بالنسبة لي
    اتمنى اني افهمها جيدا معك

    ردحذف
  4. العفو أخي الحبيب،إن شاء الله سأجعلها أبسط من البساطة

    ردحذف
  5. بالتوفيق اخي ننتظر المزيد

    ردحذف

إرسال تعليق

شاركنا رأيك حول الموضوع...