SmashTheStack #Level 01 walkthrough
بسم الله الرحمن الرحيم
الحمدلله والصلاة والسلام على اشرف الانبياء والمرسلين سيدنا محمد وعلى آله وصحبه اجمعين
اليوم باذن الله راح اشرح الحل للمرحلة الاولى من تحديات موقع SmashTheStack
بالبداية راح يتم الاتصال على السيرفر بالامر التالي
ssh -l level1 io.smashthestack.org -p2224
والباسوورد هو level1
المرحلة الاولى من سلسلة التحديات لايوجد لها الملف البرمجي او الكود البرمجي وهذا يخلينا نحلل الاداة بادوات الهندسة العكسية
عند تشغيل الكود راح يطلب منا ادخال ثلاث ارقام الى الان هذا اللي نعرفه عن عمل البرنامج
ناخذ البرنامج على (GNU Project Debugger) وهو GDB لنتمكن من تحليل البرنامج
بعد تحميل الكود البرمجي في gdb نحاول نشوف كيف طريقة عمل البرنامج عن طريق تفكيك الروتين الاساسي للكود وهو main في لغة السي
الظاهر امامنا ان البرنامج يعمل push وهي الطريقة لادخال البيانات للمكدس Stack
مثال عشان نبسط اكثر
الحمدلله والصلاة والسلام على اشرف الانبياء والمرسلين سيدنا محمد وعلى آله وصحبه اجمعين
اليوم باذن الله راح اشرح الحل للمرحلة الاولى من تحديات موقع SmashTheStack
بالبداية راح يتم الاتصال على السيرفر بالامر التالي
ssh -l level1 io.smashthestack.org -p2224
والباسوورد هو level1
المرحلة الاولى من سلسلة التحديات لايوجد لها الملف البرمجي او الكود البرمجي وهذا يخلينا نحلل الاداة بادوات الهندسة العكسية
عند تشغيل الكود راح يطلب منا ادخال ثلاث ارقام الى الان هذا اللي نعرفه عن عمل البرنامج
ناخذ البرنامج على (GNU Project Debugger) وهو GDB لنتمكن من تحليل البرنامج
بعد تحميل الكود البرمجي في gdb نحاول نشوف كيف طريقة عمل البرنامج عن طريق تفكيك الروتين الاساسي للكود وهو main في لغة السي
الظاهر امامنا ان البرنامج يعمل push وهي الطريقة لادخال البيانات للمكدس Stack
مثال عشان نبسط اكثر
push 0xdeadbaaf ; ادخال القيمة0xdeadbaaf الى المكدس (Stack)
بعدين الكود يستدعي الدالة puts وهي دالة في لغة السي لعرض الكلام مختار على الشاشة وفي حالتنا ذي
الكلام هو "Enter the 3 digit passcode to enter:"
بعد ذلك يتم استدعاء الدالة fscanf وهي ايضا دالة بلغة السي وتستخدم لاستقبال المدخلات من المستخدم
او من ملف
بعدين ياتينا اهم شي وهو cmp instruction ويستخدم للمقارنة بين مدخلين وفي هذي الحالة بين مدخلنا
من الارقام لانه راح يكون موجود في المكدس وبين القيمة 0x10f القيمة هذي في decimal هي 271
بعد كذا تاتينا (function) وهي YouWin في حال ادخلنا الرقم الصحيح
وبعد ذلك دالة exit للخروج من البرنامج
يعني اول مانشغل البرنامج راح يطلع لنا مخرجات من الدالة puts بعدين راح يتم مسح المدخلات بالدالة
fscanf بعدين راح يصير مقارنة بين المدخل والقيمة 271 اذا كانت صحيحة راح يعرض تتنفذ YouWin
نجرب ونشوف
الى هنا تم الشرح ولله الحمد والمنة
ان اعجبك فاذكر الله وادعوا لي في هذا الشهر المبارك وان لم يعجبك انتقدني لاصبح افضل .



تعليقات
إرسال تعليق