SmashTheStack #Level 01 walkthrough

بسم الله الرحمن الرحيم

الحمدلله والصلاة والسلام على اشرف الانبياء والمرسلين سيدنا محمد وعلى آله وصحبه اجمعين

اليوم باذن الله راح اشرح الحل للمرحلة الاولى من تحديات موقع 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 
 
نجرب ونشوف 
 
 
 

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

تعليقات

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

Html code injection-[Post-Get-StoredData!]-

CRLF injection [\r\n Carriage Return]