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

والرسالة كانت

This is exciting we're going to 0x80484a4
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

نكتب الاستغلال ونشوف






وبكذا الحمدلله تم تخطي المرحلة الثالثة والى المرحلة القادمة دمتم بود

اذا اعجبتك فاذكر الله وادع لي وان لم اعجبك فانتقدني لاصبح افضل

تعليقات

المشاركات الشائعة من هذه المدونة

CRLF injection [\r\n Carriage Return]

Study in Nosql-Injection-Mongodb