SmashTheStack #Level 03 walkthrough
بسم الله الرحمن الرحيم
اللهم لا علم لنا الا ماعلمتنا انك انت العليم الحكيم
اليوم اكمل معكم احبتي سلسة تحديات موقع SmashTheStack
في الدروس السابقة تخطينا المرحلة الاولى والثانية واليوم باذن الله نكمل الى المرحلة الثالثة
بسم الله نبدا
الخلاصة من الكود هو تعلم طريقة التحكم في EIP او مايمسى بـ Return address لو ناخذ نظره على الكود تبعه
مثل ماتشوفون فيه دالتين الاولى good وهي اللي نبي نوصلها عشان نقدر ناخذ شل والثانية bad
طيب نتعمق اكثر ونحمل الكود على gdb
بالصورة السابفة فككت الدالة good ومثل مانتوا شايفين العنوان 0x08048474 هو نفس العنوان يوم كتبنا 1234
وطلع خطا المدخل
يعني كل اللي نبي نوصله انّا نقدر نوصل للعنوان هذا عشان نقدر ناخذ شل
لو قريتوا الكود البرمجي للكود راح تلاحظون ان حجم البفر هو 50 يعني لو اضفنا اكثر من كذا راح يصير طفح بس هل ياترى بنقدر نتحكم بعنوان العودة EIP ؟
قبل مانبدا نسوي بريك بوينت بعد الدالة
عشان نقدر نشوف المكدس (Stack) طيب نبدا نشغل البرنامج طبيعي ونختبر المكدس
الامر الاول كان run AAAA يعني نشغل البرنامج باربع حروف A وبعدين وصلنا للبريك بوينت واختبرناها بالامر x/32xw $esp و esp هو المكدس او شكل الذاكر في الوقت الحال
لو تتدققون راح نلقى العنوان اللي موجود في رسالة الخطا او ماشغلنا البرنامج اللي هو 0x080484a4
والرسالة كانت
يعني يبي لنا كم بايت عشان نوصل للعنوان هذا ونغيره
نحسب وين عنوان حروف A في الذاكرة ونطرحها من عنوان الخطا
حروف الاي عنوانها 0xbffffc60 مثل ماهو واضح بالصورة وعنوان الخطا 0xbffffca0
طلع لنا 64 بايت
نجرب هل هو صحيح او لا
للاسف بعيدين عن العنوان ب 12 بايت
الان بعد ماعرفنا وتاكدنا نجي للاستغلال وهو 76 حرف لان 64 + 12 = 76 ونحط العنوان اللي نبيه لانه راح يكون هو عنوان العودة
الرسالة تقول لابد اني اكون في العنوان 0x8048474
نكتب الاستغلال ونشوف
وبكذا الحمدلله تم تخطي المرحلة الثالثة والى المرحلة القادمة دمتم بود
اذا اعجبتك فاذكر الله وادع لي وان لم اعجبك فانتقدني لاصبح افضل
اللهم لا علم لنا الا ماعلمتنا انك انت العليم الحكيم
اليوم اكمل معكم احبتي سلسة تحديات موقع SmashTheStack
في الدروس السابقة تخطينا المرحلة الاولى والثانية واليوم باذن الله نكمل الى المرحلة الثالثة
بسم الله نبدا
الخلاصة من الكود هو تعلم طريقة التحكم في EIP او مايمسى بـ Return address لو ناخذ نظره على الكود تبعه
مثل ماتشوفون فيه دالتين الاولى good وهي اللي نبي نوصلها عشان نقدر ناخذ شل والثانية bad
طيب نتعمق اكثر ونحمل الكود على gdb
بالصورة السابفة فككت الدالة good ومثل مانتوا شايفين العنوان 0x08048474 هو نفس العنوان يوم كتبنا 1234
وطلع خطا المدخل
يعني كل اللي نبي نوصله انّا نقدر نوصل للعنوان هذا عشان نقدر ناخذ شل
لو قريتوا الكود البرمجي للكود راح تلاحظون ان حجم البفر هو 50 يعني لو اضفنا اكثر من كذا راح يصير طفح بس هل ياترى بنقدر نتحكم بعنوان العودة EIP ؟
قبل مانبدا نسوي بريك بوينت بعد الدالة
عشان نقدر نشوف المكدس (Stack) طيب نبدا نشغل البرنامج طبيعي ونختبر المكدس
الامر الاول كان run AAAA يعني نشغل البرنامج باربع حروف A وبعدين وصلنا للبريك بوينت واختبرناها بالامر x/32xw $esp و esp هو المكدس او شكل الذاكر في الوقت الحال
لو تتدققون راح نلقى العنوان اللي موجود في رسالة الخطا او ماشغلنا البرنامج اللي هو 0x080484a4
والرسالة كانت
This is exciting we're going to 0x80484a4
I'm so sorry, you're at 0x80484a4 and you want to be at 0x8048474
I'm so sorry, you're at 0x80484a4 and you want to be at 0x8048474
يعني يبي لنا كم بايت عشان نوصل للعنوان هذا ونغيره
نحسب وين عنوان حروف A في الذاكرة ونطرحها من عنوان الخطا
حروف الاي عنوانها 0xbffffc60 مثل ماهو واضح بالصورة وعنوان الخطا 0xbffffca0
طلع لنا 64 بايت
نجرب هل هو صحيح او لا
للاسف بعيدين عن العنوان ب 12 بايت
الان بعد ماعرفنا وتاكدنا نجي للاستغلال وهو 76 حرف لان 64 + 12 = 76 ونحط العنوان اللي نبيه لانه راح يكون هو عنوان العودة
الرسالة تقول لابد اني اكون في العنوان 0x8048474
نكتب الاستغلال ونشوف
وبكذا الحمدلله تم تخطي المرحلة الثالثة والى المرحلة القادمة دمتم بود
اذا اعجبتك فاذكر الله وادع لي وان لم اعجبك فانتقدني لاصبح افضل
تعليقات
إرسال تعليق