PracticU

ביצוע בפועל של ההתקפה - buffer overflow

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › ביצוע בפועל של ההתקפה - buffer overflow
מילון מושגים:
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
מעבד - יחידת העיבוד המרכזית של המחשב, שמבצעת את הפקודות של התוכניות ומנהלת את החישובים.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.

ביצוע בפועל של ההתקפה - buffer overflow

בשיעור זה, שיעור השיא של סדרת גלישת החוצץ, מוצג ברמה מושגית בלבד שיא התהליך: הרצת ההתקפה שנבנתה בשיעורים הקודמים על מחשב מעבדה, אימות בדיבאגר שהמעבר אל הקוד השתול מתבצע בדיוק כמתוכנן, טיפול בבעיית הקוד שדורס את עצמו באמצעות פקודות ריקות, והרצה סופית בלי דיבאגר שמדגימה את התוצאה הסופית של החולשה.
נושאי הסיכום המוצגים בשיעור:
1. מטרת השיעור: עד כה בסדרה נבנו כל שלבי ההכנה: שליטה באוגר EIP, איתור כתובת סטטית של פקודת קפיצה אל ראש המחסנית בספרייה שאינה מוגנת, ויצירת קוד שתול מקודד ללא תווים אסורים. בשיעור זה מריצים את הכול יחד ורואים את התוצאה.
2. מבנה הקלט המלא: הקלט שנשלח לשדה קליטה שאינו בודק גבולות בנוי מארבעה חלקים ברצף: מילוי שדורס את המשתנים המקומיים של הפונקציה, כתובת החזרה מדורסת שמצביעה על פקודת הקפיצה אל ראש המחסנית בספרייה הלא מוגנת, ארבעת בתים של הפרמטרים שיישלפו וייעלמו בסיום הפונקציה, ואחריהם הקוד השתול עצמו שממתין במחסנית.
3. חזרה על ההיגיון של הקפיצה: לא ניתן לשתול פקודה ישירות ב-EIP כי הוא תמיד מצביע על כתובת, ולכן שותלים בו את הכתובת הסטטית שבה יושבת פקודת הקפיצה אל אוגר ESP. המעבד קופץ לספרייה, מבצע את הקפיצה, וחוזר אל ראש המחסנית שבה ממתין הקוד השתול.
4. הקוד השתול מקודד: הקוד שמוכן לשתילה הוא קוד מקודד, כעין אריזה כווצת שיודעת לפתוח את עצמה בזיכרון ולשחזר את הקוד המקורי. הקידוד נעשה כדי להעלים את התווים האסורים, שהשרת מפרש כסיום מחרוזת או סיום תקשורת וקוטעים את העברת הנתונים באמצע.
5. אימות בדיבאגר: מתחברים בדיבאגר אל תהליך השירות שרץ במחשב המעבדה, והופכים להיות הדיבאגר שלו כך שאחרי כל פקודה הריצה חוזרת אלינו. מציבים נקודת עצירה בכתובת הקפיצה, מריצים את סקריפט הבדיקה, והריצה נעצרת בדיוק בנקודה שסומנה, דבר שמאשר שכל השלבים הקודמים עבדו.
6. הקפיצה אל הקוד השתול: צעד אחד מראה שהמעבד מבצע את פקודת הקפיצה ומגיע אל ראש המחסנית. בצפייה בתוכן הזיכרון באותה כתובת רואים שהקוד השתול אכן נמצא שם, שראש המחסנית וה-EIP מצביעים שניהם אל תחילתו, ושמבנה הקלט מופיע בזיכרון בדיוק בסדר שתוכנן.
7. בעיית הקוד שדורס את עצמו: בהמשך הריצה מגיעים לפקודה ששומרת מידע לכתובת שנמצאת מעט לפני ראש המחסנית אך כותבת אל עברו טווח ארוך ממנו. הקוד השתול רץ דווקא בתוך המחסנית ואינו מודע לכך, הוא מניח שהוא נמצא באזור קוד רגיל ושראש המחסנית הוא אזור נתונים פנוי, ולכן השמירה שלו דורסת את הקוד שהוא עצמו מבצע ברגע זה. הפקודה הבאה לביצוע משתנה בזיכרון למשהו אחר, הריצה יוצאת מן המסלול והתהליך נופל עם שגיאת גישה.
8. הפתרון: פקודות ריקות NOP: הפתרון המקובל הוא להרחיק את הקוד השתול מראש המחסנית. לפני הקוד מכניסים רצף של פקודות ריקות, שבשפת מכונה מיוצגות בבית אחד קבוע ומשמעותן אל תעשי דבר, פשוט עבור לפקודה הבאה. בהרצה רואים שראש המחסנית מצביע אל תחילת רצף הריקות, המעבד עובר דרכן אחת אחרי השנייה, וכאשר מגיעים אל הפקודה הבעייתית הריצה כבר התרחקה מספיק מראש המחסנית, כך שהדריסה שלה כבר אינה נוגעת בקוד הרץ.
9. הרצה בלי דיבאגר: לבסוף מריצים את הכול בתנאים אמיתיים, בלי דיבאגר: מפעילים את השירות כרגיל במחשב המעבדה, פותחים בצד התוקף האזנה לחיבור חזרה, ומריצים את סקריפט ההתקפה. התוצאה היא שנפתח חלון פקודה פעיל בתוך מחשב המעבדה, המקבל ומבצע פקודות שנשלחות אליו מרחוק.
10. משמעות התוצאה והלקח: חלון הפקודה פועל בתוך תהליך השירות עצמו, ולכן יורש את ההרשאות שלו, ושירות שרץ ברקע במערכת פועל בהרשאות הגבוהות ביותר של מערכת ההפעלה. זו הדגמה חיה לכך שחולשה אחת פשוטה, שדה קליטה שלא בדק את גודל הקלט, מאפשרת שליטה מלאה במחשב. הלקח למתכנת הוא ברור: חייבים לבדוק תמיד את גודל הקלט לפני השמירה בזיכרון, להפעיל את מנגנוני ההגנה של המערכת והמעבד, ולא להשאיר אזורי זיכרון שהם גם לכתיבה וגם ניתנים להרצה.
בסיום השיעור ראינו ברמה המושגית את השלמת שרשרת גלישת החוצץ: אימות בדיבאגר שהקפיצה מ-EIP אל ראש המחסנית מגיעה בדיוק אל הקוד השתול, הבנת בעיית הקוד שדורס את עצמו כשהוא רץ בתוך המחסנית, הפתרון באמצעות רצף פקודות ריקות שמרחיק את הקוד מראש המחסנית, וההדגמה הסופית בלי דיבאגר שמראה את התוצאה של חולשה שלא טופלה. תודה רבה, ולהתראות בהרצאות הבאות. SR12073HE

פרקי ההרצאה: ביצוע בפועל של ההתקפה - buffer overflow

  1. 00:00

    חיבור לתוכנה כדיבאגר

  2. 01:32

    הוראת Jump ESP בשפת מכונה

  3. 03:21

    מעקב אחר יעד הקפיצה

  4. 05:06

    מבנה הסקריפט וה-filler

  5. 07:00

    מיקום ה-shellcode במחסנית

  6. 08:33

    הרכב ה-input buffer

  7. 10:21

    בדיקת הזיכרון ב-ESP

  8. 12:27

    בעיית דריסה עצמית של הקוד

תמלול ההרצאה: ביצוע בפועל של ההתקפה - buffer overflow

הטקסט המלא של הדקות הראשונות בהרצאה «ביצוע בפועל של ההתקפה - buffer overflow» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם, ברוכים הבאים להרצאה שבה אנחנו נפרוץ סוף סוף לשרת בלי לדעת שם וסיסמה, דרך שירות, דרך סרוויס, דרך תוכנה שרצה אצלו ברקע שנקראת סינק ברידס. אנחנו לא יודעים שם משתמש, אנחנו לא יודעים סיסמה, אנחנו רק נתחבר לתוכנה הזאת, נשלח לה קוד זדוני ונשתלט עליה.

  2. 00:24

    בואו נפעיל את זה עכשיו באימיוניטי ונראה את כל זה קורה תכלס. מפעילים אימיוניטי עם הרשאות של אדמיניסטרטור כדי שנוכל לעשות את touch להתחבר לתהליך שרץ בזיכרון לסרוויס של סינגבריץ.

  3. 00:37

    אנחנו מתחברים לתוכנה קיימת, אנחנו למעשה נהיים הדבאגר של התוכנה. ומה זה אומר שאנחנו הדבאגר שלה? זה אומר אחרי כל פקודה היא חוזרת אליי. היא עושה פקודה, חוזרת אליי.

  4. 00:52

    אליי זה לדבאגר. כרגע הדבאגר איך שהוא התחבר אליי הוא העביר אותה לפאוז, עצר אותה, אז היא במצב של פאוז עכשיו, ואני יכול ללחוץ play, סימן של פליי למעלה ושהיא תמשיך לרוץ בואו נדלג לכתובת הזאת של dll שקבוע בזיכרון בלי הגנת aslr ובכתובת הזאת בתוך ה dll הזה יושבת

  5. 01:16

    הפקודת jump esp שתחזיר אותי חזרה לסטאק לכתובת של הסטאק אומר jump לתוך הכתובת בזיכרון שיושבת בתוך מצביע esp יש רגיסטר יש אוגר esp שמצביע לראש המחסנית ואני אומר בוא תקפוץ חזרה למעשה אני מחזיר את השליטה אליי למה לא יכולתי לעשות את זה

  6. 01:37

    ישר מסיבה מאוד פשוטה שאני לא יודע באיזה כתובת יהיה ESP הזה הפקודה הזאת Jump ESP בשפת אסמבלר בשפת מכונה זה FFE4 זה למעשה תקן של x86 זה התקן של שפת מכונה x86 שאומר FFE4 המשמעות של זה Jump ל-ESP עכשיו תשאלו למה ב-EIP לא שלטלת ישירות את הג'אמפ ASP בשביל מה לך לקפוץ ל-DLL ואז לחזור חזרה

  7. 02:08

    כי בתוך ה-EIP אני שותל כתובת אני לא יכול לשתול פקודה אם EIP זה לא היה כתובת אלא היה ממש פקודה לביצוע אז הייתי שותל לו ג'אמפ ASP ונגמר הסיפור הקטע ש-EIP הוא מצביע למקום שיש בו את הפקודה אני לא יכול לשתול לו את הפקודה אז אני צריך לשתול ל-EIP כתובת ששם הכתובה הפקודה שאני רוצה שיבצע ואת זה עשינו בסרטים הקודמים מצאנו תובת בזיכרון שהיא גם הפקודת Jump ASP גם נמצאת ב-DLL שהוא ללא SLR וגם

  8. 02:46

    בכתובת שלו למעלה שם בצד שמאל אין סימנים אסורים הוא לא מתחיל בכתובת במספרים שאסורים לשליחה ב-HTTP אז יופי למזלנו יש DLL כזה שהוא גם בלי SLR גם בלי מספרים אסורים וגם גם יושבת בו פקודת Jump ASP וגם אין לו את ההגנה ASLR מושלם שהתוכנה הזאת משתמשת ב-DLL שיש לו את כל הדברים האלו ואז אני דורס את ה-EIP, מכניס לו את הכתובת הזאת, הוא קופץ לשמה, מבצע את הפקודה שמה,

  9. 03:21

    שמה היא עושה? מקפיצה אותו חזרה אליי ל-ESP והוא מבצע את הפקודות שאני דחפתי לו בתוך ה-Stack האמת שאם האקר היה רוצה לבנות מעבד לעצמו שיהיה לו ככה חיים טובים הוא היה בתוך eip לא שם כתובת שמצביעה לפקודה הבאה לביצוע אלא שם את הפקודה עצמה אז זה היה הרבה יותר קל לא משנה אנחנו נקפוץ

  10. 03:45

    לשם ונחזור חזרה עכשיו אנחנו חייבים להבין לאן בדיוק פקודת jumpasp תיקח אותנו לאן היא תקפיץ אותנו בדיוק כי אנחנו צריכים לשתול שם את השל קוד אז אני לוחץ f2 אני שם breakpoint מה זה ה-breakpoint הזה זה אומר לתוכנה תרוצי מהר מהר תבצעי את כל הפקודות אל תחזירי אליי אחרי כל פקודת ערוץ לא לעצור עד שלא מגיעים לברקפוינט איך שהגענו לברקפוינט

  11. 04:14

    עוצרים ואז אני מתחיל לעשות שורה אחרי שורה כי בא לי לראות מה קורה שמה בזיכרון למעשה הדבאגר הזה ברגע שהוא מתחבר לסרוויס אחרי כל פקודה התוכנה חוזרת לתוכנת הדבאגר מחזירה אליו את השליטה והדבאגר אם הוא נמצא במצב ראנינג הוא אומר לה תמשיכי תמשיכי תמשיכי עד שמגיעים לברקפוינט אחרי הברקפוינט תעצרי ברגע שעוצרים יש לי בחירה עוד פעם לרוץ מהר

  12. 04:40

    או לעבור פקודה פקודה יש לי למעשה שליטה טובה על התוכנה ועל כל פקודה לביצוע אני כמו האימא והאבא של התוכנה שאחרי כל פקודה שהיא מבצעת היא חוזרת אליי אז לחצנו F2, שמנו ברק פוינט, יש לנו פה את כל הפקודות אנחנו רוצים לראות בדיוק לאן הוא יקפוץ אחרי

  13. 04:59

    ג'אמפ ESP אנחנו עכשיו עברנו למצב ראנינג עם F9 אני רק רוצה להזכיר לכם מה יש לנו בתוך הסקריפט יש לנו בתוך הסקריפט את השל קוד, את הקוד הזדוני הזה, ה-CMD הזה שיפתח לו בזיכרון, ואליו אנחנו נשלח את הפקודות שלנו מהמקלדת.

  14. 05:15

    זה השל קוד שיצרנו אותו בהרצאה הקודמת. למעשה אנחנו שולחים לו את הפילר, שזה 780 פעם אות A. למה? כדי למחוק מהזיכרון את כל המשתנים שהפונקציה הזאת שתלה בזמן הביצוע שלה.

  15. 05:29

    אנחנו דורסים את כל המשתנים שהיא שתלה בזיכרון, אנחנו רוצים להגיע ל-EIP. זאת אומרת, אנחנו דרסנו את זה והמשכנו לדרוס עם EIP.

  16. 05:41

    למעשה, אני מראה לכם את כל מה שעשינו בהרצאות קודמות. זה 780 פעם אות A, כי זה 780 בייט של המשתנים הלוקאליים.

  17. 05:49

    אחרי זה מגיע EIP, שזה הדבר הכי חשוב. זה למעשה כתובת בזיכרון שבה מגובה הערך של EIP. בדיוק לשם יוקפץ המעבד בסיום הפונקציה, ואחרי זה יש לנו את ארבע הבתים שבהם יושבים הפרמטרים שאיתם הפעלנו את הפונקציה הזאת, גם אותם צריך לנקוט בסיום ביצוע של הפונקציה, זה למעשה הקוד שעדיין אני לא שולט עליו,

  18. 06:20

    ואחרי זה ה-ESP, הסטק, יצביע על מה שהיה כביכול לפני ההפעלה של הפונקציה הזאת, ושם אני שתלתי את השל-קוד.

  19. 06:31

    למעשה הראש של המחסנית יצביע בדיוק על השל-קוד שלי, ובמשתנה הזה של קוד יושב כל ה-CMD הזה. זה למעשה קוד שפותח לי את ה-CMD.

  20. 06:42

    אני מצפה שבסיום ביצוע של הפונקציה הוא ישלוף את ה-EIP, ישלוף את ארבע פעמים C, את הכתובות האלו בזיכרון, ויחזיר את הראש של הסטייק לכתובת של השל קוד.

  21. 06:54

    ואני שותל שמה את הקוד הזדוני שלי. הוא חושב שהוא חוזר למקום הרגיל, ולמעשה בתוך הסטייק כבר אין את המידע המקורי, יש את כל המידע שדרסתי, ואני מצאתי את המקום המדויק שלשם צריך להכניס את הקוד הזדוני שלי, את השל-קוד שלי, את ה-CMD שלי.

  22. 07:16

    זאת הכתובת שלשם יצביע ראש המחסנית, ה-ESP, בסיום ביצוע של הפונקציה. זה נשמע מושלם, נכון? דרך אגב, אני מזכיר לכם שהשל-קוד הזה, אנחנו יצרנו אותו על ידי קידוד מיוחד, כמו זיפ כזה, שלא יכלול את הסימנים האסורים.

  23. 07:38

    זאת אומרת, לקחנו את השל קוד הרגיל ואמרנו זה לא טוב לנו של קוד רגיל כי יש שם סימנים אסורים מה זה סימנים אסורים? סימנים שאם אני משדר אותם השרת חושב שהתקשורת נפסקה, סיום התקשורת זה סימן שאומר לו הסתיימה התקשורת, הסתיים הסטרינג, הסתיים האינפוט ולא נותן לי להמשיך אז אני רוצה לדלג על סימנים אסורים אז אני עושה לו כמו זיפ כזה שיודע לפתוח את עצמו

  24. 08:03

    קידוד שיודע לעשות פתיחה עצמית של עצמו לקוד המקורי של של. זה למעשה של כמו מכווץ בזיכרון, רק עם סימנים שמותר. זה מעין התחכמות כזאת, כדי לא לגרום לשרת פתאום לעצור באמצע העברת הנתונים.

  25. 08:23

    אוקיי, אז יש לנו של קוד בזיפ כזה שפותח את עצמו, יש לנו אות A780 פעם, יש לנו את ה-EIP, יש לנו את ה-C4, ויש לנו את השל קוד.

  26. 08:33

    זה ביחד נקרא input buffer זה למעשה מה שאני שולח לו שולח לו תמחק קודם כל את כל המשתנים הלוקאליים אחרי זה תדרוס את הגיבוי לחזרה שיש תדרוס את ארבע הכתובות שלא מעניינות אותי שזה המשתנים המקוריים שאיתם הפעילו את הפונקציה האופסט ותכניס לראש של המחסנית שיהיה בסיום הפונקציה את השל קוד למעשה את הנתונים האלו שיהיו במקום הנתונים המקוריים שהיו שהם בכלל

  27. 09:01

    כבר לא מעניינים אותי אני דורס אותם זה למעשה מה שאני שולח לו שישים בתוך הסטאק במקום היוזרניים במקור מה היה צריך להיות פה באינפוט באפר הזה מה היה צריך להיות שם אתם זוכרים היה צריך להיות שם יוזרניים אנחנו קלטנו שהמתכנת לא בודק את גודל הזיכרון בגודל האינפוט ואנחנו במקום יוזרניים של 5-7-20 אותיות שלחנו לו

  28. 09:25

    יוזרניים את כל הדבר הזה וחרגנו מגבולות הזיכרון שהקצינו ודרסנו את הכל בואו נראה את כל זה קורה אז יש לנו ברק פוינט בכתובת של jump.asp אני רוצה לראות לאן בדיוק ה-asp הזה יקפוץ אנחנו במצב running עם breakpoint ואנחנו נשלח את הדבר הזה ואני רוצה לראות שהוא בדיוק קופץ

  29. 09:47

    למקום הנכון אז בוא נפעיל אותו עם python singbridge 0.7 py יפה הפעלנו אותו והנה הוא במצב pause למה כי הוא מחכה לפקודה שלי הוא נעצר בפקודה הזאתי זה אומר שעד עכשיו זה הכל תקין הוא ב-breakpoint הוא נעצר ואני יכול ללחוץ לו f7 לעשות step אחד צעד אחד שהקפיץ אותי ל-ESP, למעשה לבצע את

  30. 10:09

    הפקודה הזאת ואני רוצה לראות לאן אני קופץ ומה יש שם בתוך הזיכרון הזה אז למעשה שלחנו לו את הקוד הזדוני, דרסנו את הכל, הוא סיים את הפונקציה וקפץ לכתובת שלנו ואנחנו עכשיו קפצנו חזרה ל-ESP, הנה ESP 744C בואו נראה מה יש לנו שם בזיכרון, Follow

  31. 10:29

    the Dump ומה אני רואה בתא זיכרון 744C, איפה שמצביע ה-ESP שלנו בתחילת הסטייק מה אני רואה בדיוק את השל קוד אני רואה שם db c2 be פקודות של השל קוד שאנחנו הכנסנו זאת אומרת שהכנסנו את הפקודות בדיוק למקום הנכון בזיכרון בדיוק למקום שאליו קפץ ה-eip כפקודה הבאה לביצוע חבר'ה הצלחנו להקפיץ אותו למקום הנכון

  32. 11:00

    והכל נראה מעולה עכשיו הוא יתחיל עם f7 לעשות פקודה אחר פקודה אנחנו נלחץ F7 ונעשה את הפקודה הראשונה שימו לב מה יש לנו בפקודה 744C אנחנו יכולים לראות גם בחלק העליון וגם בדאמפ של הזיכרון למטה וגם בתוך הסטייק אנחנו רואים שבכל מקום כתוב dbc2 שזה בדיוק הפקודות של השל קוד זה אומר שקפצנו בדיוק למקום שרצינו הרי זאת

  33. 11:28

    הפקודה הראשונה שרצינו שהוא יבצע לפני שאני אלחץ F7 בואו נראה שיש שם באמת את ה-AAA41 הזה שדחפנו אחרי זה יש לנו את הכתובת להקפצה 83.0C.0.9.10 זוכרים? זה הגיבוי של EIP שדרסנו אחרי זה יש לנו את ה-CCC עם 43 הזה ארבע פעמים, אתם רואים 43 ואחרי 43 ארבע פעמים יש לנו DBC2 זה בדיוק תמונת הזיכרון שעשינו לו

  34. 11:59

    ולאן ה-ESP מצביע אחרי כל הקפיצות לשם לפה ה-ESP מצביע בדיוק להתחלה של השואל קוד 744C זאת הכתובת של ההתחלה של השואל קוד שגם ESP מצביע לשם וגם EIP מצביע לשם זה אומר אם EIP מצביע זה אומר שזאת הפקודה שתתבצע חברים ממש ממש הצלחנו ואני לוחץ F7 לראות שהפקודות של השואל קוד באמת באמת מתבצעות הנה לחצתי F7 והנה הגענו לפקודה הבאה בכתובת 744 eip התקדם והפקודה הבאה מתבצעת

  35. 12:37

    באמת זאת הפקודה שיש לנו בתוך השל קוד שלנו הפצצה שלנו מתחילה לפעול ופה אנחנו מגיעים לפקודה בעייתית שימו לב לפקודה הזאת הפקודה הזאת אומרת תשמור 28 בייט של מידע לתוך esp-c זאת אומרת תשמור את זה לתוך כתובת בזיכרון של המחסנית פחות 12. C זה 12 באקסה.

  36. 13:08

    אבל הוא לא מודע לזה שהוא בעצמו עובד ב-ESP. הוא בעצמו יושב בתוך הסטאק. עכשיו, הוא לא מודע לזה כי הוא חושב שהוא יושב באזור הקוד, הרי זה פקודות רגילות.

  37. 13:20

    הפקודות הרגילות האלו שומרות את המידע בתוך הסטאק. אבל מה יקרה? מה זה ה-ESP הזה? מה זה ESP מינוס C? ESP מינוס 12 זה למעשה הוא יעלה טיפה למעלה, 12 בתים למעלה, יעלה 12 כתובות למעלה אבל הוא ישמור 28 כתובות מה זה אומר שהוא ידרוס את המקום הנוכחי שלו הוא למעשה לא מודע לזה שהוא בעצמו רץ בתוך

  38. 13:51

    ה-ESP הוא חושב שהוא רץ באזור הקוד ושומר מידע ב-ESP מינוס C וכשאנחנו מבצעים את הפקודה הזאת עם F7 קורה דבר מדהים הוא דורס את ה-ESP והוא דורס את עצמו הוא דורס את הקוד שכרגע רץ הוא דורס את עצמו זה כמו נחש שאוכל את עצמו נראה לי שיש נחשים כאלו ואז כל הביצוע של הקוד שלנו מתפקשש כי הוא שמר מידע בתוך בעצם אזור הפקודות שהוא

  39. 14:24

    בעצמו מבצע כפי שאתם רואים מה שקורה שהוא שומר מידע בתמימות שלו בתוך ה-ESP מינוס 12 שומר שם 28 בתים ולא מודע לזה שהוא זה שגם נמצא שם בעצמו, כי זה כביכול מצב לא תקין, והוא דורס את עצמו. ושימו לב מה קורה אחרי הפקודה הזאת.

  40. 14:52

    קורה שכל הפקודות פתאום בזיכרון משתנות. הדבר היחיד שנשאר, אם

לקורס המלא: קורס סייבר למתחילים אונליין

ההרצאה הקודמת: הסבר על התקפה - buffer overflow

ההרצאה הבאה: הרשמה חינם לאתר THM - TryHackMe

הרצאות קשורות מקורסים אחרים

  • התקפת NtlmRelayX על Windows 11 - חלק 2 - ביצוע ההתקפה
  • איך מתבצע JOIN בפועל - חלק 1
  • ביצוע המרה - Cast
  • ביצוע compile לתוכנה

קורסים נוספים במסלול

  • קורס SOC - מיישם הגנת סייבר
  • קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting