פתירת אתגר protostar | stack0!

פתירת אתגר protostar | stack0!

הכנה:
אפתור היום את אתגרי protostar, שהם אתגרי אקספלואיטציה בינארית בלינוקס.
סדרת אתגרים זו נמצאת באתר:exploit-exercises.com, שמציג שלל אתגרים באקספלואיטציה בינארית. חוץ מאתגרי protostar.
בשביל לפתור את האתגר, נדרש מכם להוריד מכונה וירטואלית של האתגר ולהתקין אותה.
לפני הצגת פתרון האתגר, אסביר לכם על הstack.
 הstack היא חלק מזיכרון המחשב המוקצה לשמירת נתונים זמניים של התוכנה.
הstack עובד בשיטת LIFO, שאומרת שהערך האחרון שנכנס לstack. הוא הראשון שיצא.
לstack יש שתי פקודות שחשובות בשבילנו, האחת היא push שהיא דוחפת למחסנית נתון חדש.
וpop, שולפת מהמחסנית את נתון האחרון שהוכנס אליה.
להלן תמונה להמחשה:
תוצאת תמונה עבור ‪stack‬‏
היום אפתור את השלב הראשון באתגר שנקרא "stack0".
תחילה ניגש לקוד המקור של התוכנה.

לאחר שקראנו את קוד המקור, הסקנו שהמטרה הייתה לשכתב את הערך modified שלא יהיה שווה ל0.
שמנו לב לערך buffer, שמוגבל ל64 בייטים.
מכיוון, שהפונקציה gets, מאפשרת לי להכניס מחרוזת כלשהי לערך buffer.
אם אעבור את 64 הבייטים שbuffer מוגבל, אוכל לשכתב את הערך modified.
לכן הכנסתי מחרוזת של 70 בייטים לערך buffer.

ושכתבתי את המשתנה modified שממוקם לאחר buffer בstack, ולכן היינו יכולים לגלוש לכתובת של modified בסטאק. וקיבלתי את ההודעה שהצלחתי.
כפי שציינתי למעלה, אפתור בהמשך עוד אתגרים בסדרה ואפרסם.
מקווה שנהנתם!




5 thoughts on “פתירת אתגר protostar | stack0!

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *