SmashTheStack #Level 05 walkthrough
بسم الله الرحمن الرحيم
اللهم لا علم لنا الا ماعلمتنا انك انت العليم الحكيم
اليوم باذن الله نكمل سلسلة تحديات موقع SmashTheStack
واليوم معنا المرحلة الخامسة
اول شي نلقي نظرة على الكود
الكود عبارة عن اعادة كتابة لما تكتبه على سطر الاوامر والخطا الواضح فيه هو استخدام الدالة strcpy لانها لاتحدد عدد البايتات وبذلك يصبح لدينا طفح بالبرنامج
المتغير buf ياخذ 128 بايت طيب لو اعطيناه اكثر من البايتات هذه وش ممكن يصير ؟
نشوف ...
عطانا المؤشر الاول لثغرات الفيض وهو Segmentation fault
نحمل البرنامج في gdb ونكرر العملية
ممتاز ولكن الى الان ماوصلنا لل eip نحاول نزيد البايتات ونشوف
نشوف registers
مثل مانتوا شايفين قدرنا نكتب على eip واصبح يؤشر على 42424242 وهي الاربع B اللي كتبناها
والشي الاخر اللي يهمنا هو مؤشر المدكس (Stack PTR esp) وهو المؤشر اللي يدلنا على مكان الذاكرة
الان كل اللي علينا نجيب الشل كود تبعنا
وهو من 38 بايت
والناتج راح يصير 140 اللي هي سببت الفيض ناقص عدد بايتات الشل وهي 38 والناتج 102
الان نعوض NOPs وهي ماتؤدي اي شي بمعنى اخر اذا وصل لها المؤشر يروح للتعليمه اللي بعده
والغرض منها الوصول للشل تبعنا
الان
مثل مانتوا شايفين اخر الاستغلال وضعت AAAA والنتيجة اعطاني خطا لان العنوان هذا ماهو موجود بالذاكرة
الان نرجع للمؤشر المكدس اللي باول صورة ونحلله عشان نضع قيمة العودة المناسبة
الان كل اللي علينا نغير AAAA باحد العناوين الموجود فيها NOPs عشان يعطينا الشل
فعلنا عطانا شل نجرب نفس الاستغلال خارج gdb
بالفعل نجحنا بالاستغلال ولله الحمد وتم الحصول على باسوورد المرحلة السادسة
الى هنا ينتهي الشرح
اذا اعجبتك فاذكر الله وادع لي وان لم اعجبك فانصحني لاصبح افضل
اللهم لا علم لنا الا ماعلمتنا انك انت العليم الحكيم
اليوم باذن الله نكمل سلسلة تحديات موقع SmashTheStack
واليوم معنا المرحلة الخامسة
اول شي نلقي نظرة على الكود
الكود عبارة عن اعادة كتابة لما تكتبه على سطر الاوامر والخطا الواضح فيه هو استخدام الدالة strcpy لانها لاتحدد عدد البايتات وبذلك يصبح لدينا طفح بالبرنامج
المتغير buf ياخذ 128 بايت طيب لو اعطيناه اكثر من البايتات هذه وش ممكن يصير ؟
نشوف ...
عطانا المؤشر الاول لثغرات الفيض وهو Segmentation fault
نحمل البرنامج في gdb ونكرر العملية
ممتاز ولكن الى الان ماوصلنا لل eip نحاول نزيد البايتات ونشوف
نشوف registers
مثل مانتوا شايفين قدرنا نكتب على eip واصبح يؤشر على 42424242 وهي الاربع B اللي كتبناها
والشي الاخر اللي يهمنا هو مؤشر المدكس (Stack PTR esp) وهو المؤشر اللي يدلنا على مكان الذاكرة
الان كل اللي علينا نجيب الشل كود تبعنا
"\xeb\x18\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xb0\x0b\xcd\x80\xe8\xe3\xff\xff\xff/bin/sh"
وهو من 38 بايت
والناتج راح يصير 140 اللي هي سببت الفيض ناقص عدد بايتات الشل وهي 38 والناتج 102
الان نعوض NOPs وهي ماتؤدي اي شي بمعنى اخر اذا وصل لها المؤشر يروح للتعليمه اللي بعده
والغرض منها الوصول للشل تبعنا
الان
مثل مانتوا شايفين اخر الاستغلال وضعت AAAA والنتيجة اعطاني خطا لان العنوان هذا ماهو موجود بالذاكرة
الان نرجع للمؤشر المكدس اللي باول صورة ونحلله عشان نضع قيمة العودة المناسبة
الان كل اللي علينا نغير AAAA باحد العناوين الموجود فيها NOPs عشان يعطينا الشل
فعلنا عطانا شل نجرب نفس الاستغلال خارج gdb
بالفعل نجحنا بالاستغلال ولله الحمد وتم الحصول على باسوورد المرحلة السادسة
الى هنا ينتهي الشرح
اذا اعجبتك فاذكر الله وادع لي وان لم اعجبك فانصحني لاصبح افضل
تعليقات
إرسال تعليق