
הטקסט המלא של הדקות הראשונות בהרצאה «התקפת Buffer Overflow שלב 3 - זיהוי תווים פסולים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזו אנחנו רוצים לגלות מה הם התווים שאסור לשלוח על הקו מה הם התווים הפסולים כי אם נעביר אותם על הקו הוא יחשוב שהתקשורת נגמרה, הסתיימה אז יש לנו פה את הקורבן שלנו ולקורבן יש פה סרוויס שפועל ומחכה ואנחנו רוצים לנסות לעשות את כל הקומבינציות האפשריות 0, 0, 0, 1, 0, 2, 0, 3
ככה את כל הזוגות האפשריים של 0 עד F ככה כמו פה אתם רואים לראות מה לא ייכנס לזיכרון מה אי אפשר הם מציעים לנו להריץ פה סקריפט שייצר לנו את כל הזוגות האפשריות בין 1 ל-256 את כל הבתים האפשריים אבל יש לי שיטה יותר נוחה אני משתמש במונה ואומר לה לבנות לי ביט אריי ביט אריי זה אומר בייט אריי זה אומר כל האופציות בלי 0.0
0.0 בוודאות אסור כי 0.0 זה סיום של סטרינג ואני מזכיר לכם שיש לנו פה את הפיילוד הזה שאני רוצה לשלוח לקורבן זאת התוכנה זאת הפצצה שאני הולך לשלוח אליו ואני צריך לגלות איזה תווים אסורים לדוגמה תו 00 אם הוא יהיה באמצע כל הסטרינג הזה ייעצר הוא יחשוב שזה סוף של הסטרינג אתם רואים הרי כל המשתנים האלו מתאספים בסוף לסטרינג אחד שקוראים לו באפר ואת הבאפר אני שולח על הקו
אז כדי שהבאפר הזה לא יעצר לי באמצע אסור לי לשים 0,0 כי יש תקן שאומר שסוף של סטרינג זה 0,0 אז בוודאות אסור לי לשים 0,0 השאלה גם מה עוד אסור לשים פה בתוך ה-payload כי מה אני הולך לעשות שלב הבא אני הולך לייצר את ה-payload הזדוני את הקוד הזדוני אני הולך
לייצר אותו אז אני צריך לגלות מה אסור לי להשתמש באיזה תווים אסור לי להשתמש טוב אז איך אנחנו עושים את זה אז במקום לייצר את כל האפשרויות ואז לשלוח אותן אני מייצר את זה בלי סקריפט אני מייצר על ידי מונה בייט אריי.
מונה בייט אריי זה טריק שהם לא חשבו עליו אבל אני אומר לכם שזה יותר טוב. שימו לב לפני שאני מתחיל בקונן סי שלי כרגע אין שום תיקיה שנקראת מונה נכון? תסתכלו אין פה מונה.
אוקיי עכשיו עשיתי וורקינג דירקטורי למונה ועכשיו אני מריץ פקודה הבאה מונה בייט אריי. מונה זה סקריפט עזר בתוך הדבאגר. הנה הוא רץ, הוא מייצר לי את כל האפשרויות. בואו ננסה לו בפונט, אולי טיפה יותר טוב.
אתם רואים, הוא עושה 0, 1, 0, 2, 0, 3, 0, 4, 0, 9, 0, A, נכון? כי זה אקסה, עד 0, F. אחרי 0, F, 1, 0, 1, 1, 2, 1, 3. שוב, אחרי זה 2, 3, 4, את כל מה שרק אפשר לחשוב עליו.
סך הכל יש 256 אפשרויות, מ-0 עד F, F. אבל אמרנו לו בלי אפס, אז עד 255 אפשרויות, עד FF. איפה הוא שם אותם? הוא שם אותם בקובץ ביתרי TXT בתוך C, מונה או ACP.
בואו נלך לשם, הנה הופיע לנו תיקיית מונה, בפנים יש לו ACP שזה אקזה שלנו ויש לנו את הביינרי ויש לנו קובץ טקסט. וזה קובץ טקסט שקיבלנו, נהדר, וזה בדיוק התווים שאני רוצה לשלוח ולבדוק מי לא עבר, מי לא הצליח לעבור.
אוקיי, אנחנו עושים את זה כתוב לנו פה לייצר את התווים האלו ואחרי שאנחנו מייצרים אותם אנחנו מכניסים אותם לתוך variable payload לתוך איזשהו משתנה payload שולחים ואז מריצים את מונה שתעשה compare שתעשה השוואה בוא נעשה את זה אז אנחנו באים פה לסקריפט במקום הccc הזה
אנחנו עכשיו מכניסים את כל התווים צריך להוריד גם את הזה מכניסים את כל התווים נראה לי אולי צריך פלוס שווה לעשות אני לא בטוח בטוח האם צריך לעשות פלוס שווה או לא בוא נעשה פלוס שווה למקרה חירום כי אני לא באמת יודע אם צריך לעשות פלוס שווה אז נעשה פלוס שווה ככה נעשה כל מקום פלוס שווה זה אומר כאילו אני מחבר את השורות ביחד הבנתם אני מוסיף
למשתנה פיילאוד עוד שורה אני לא בטוח שחייבים את זה אבל שיהיה אוקיי אז בקיצור הפיילאוד שלי מכיל את כל התווים האפשריים מ-0 1 0 2 0 3 21222345 וככה עד שמגיעים בסוף בסוף ל-FF זה אומר אני בודק את כל הבתים בודק מה לא יעבור לי אוקיי יופי מה בסקריפט עוד אני צריך פה לשנות את כתובת ה-IP כי
היא גם השתלטה לי יופי דרך אגב אם אתם מחכים יום אז יום למחרת צריך להתחבר ל-VPN מחדש ולהפעיל את הקורבן מחדש אוקיי אז יש לנו פה את הסקריפט תקין מה אנחנו עושים? אנחנו רוצים להריץ אותו, זה אני סוגר, חוזר חזרה ל-CPU וכותב פייתון 3.exploit py שאני מזכיר לכם exploit py זה עכשיו כולל את כל התווים האסורים כן אז יש לנו פה exploit py אני מריץ אותו הנה יש לנו קריסה
אבל הקריסה פחות מעניינת אותי קודם כל מה אני רואה ש-BBB עדיין נכנס לתוך EIP שזה מצוין השאלה זה מה קרה אחריו, הרי מה עשינו, הכנסנו אות A 1978 פעמים, אחרי זה הכנסנו את B ל-EIP ועכשיו אנחנו בודקים את ה-payload שאחריו, מה מותר להכניס אליו
ואנחנו צריכים לבדוק איזה תווים לא נכנסו לכאן, תסתכלו פה למעלה, אתם רואים הכל היה A, אחרי זה B ועכשיו התווים, אתם רואים 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, הופה, אני רואה שאין פה 0, 7, אתם רואים פה?
נכנסו התווים לזיכרון, אני דרך אגב יכול גם פה לראות אותם, בואו נראה. אני לוחץ על ESP, ש-ESP, העוגר של ESP,