אתגר CTF פתור למתחילים: לקרוא ולבדוק

מאת ארז ברזאני · תרגול מקורי של GammaCyber

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

האתגר

התקבל הטקסט 47414d4d41. נאמר שכל זוג תווים הוא מספר בבסיס 16 שמייצג בייט, והתוכן הוא ASCII. מה הטקסט המקורי? לפני הפתרון ספרו זוגות: יש חמישה בייטים, ולכן מצפים לחמישה תווים. אם קיבלתם תשעה תווים, כנראה ערבבתם בין הספרות המודפסות לבין הבייטים שהן מייצגות.

פתרון מוסבר

מחלקים ל־47, 41, 4d, 4d, 41. ערכי ASCII המתאימים הם G, A, M, M, A, ולכן התוצאה GAMMA. ב־Python אפשר לאמת באמצעות bytes.fromhex("47414d4d41").decode("ascii"). זו קידוד, לא הצפנה: לא נדרש מפתח סודי וההמרה מוגדרת לכל בייט. ההבחנה מסייעת לבחור כלי לפי הנתון במקום לנסות כל כלי ברשימה.

מקרה קצה ו־writeup

מה יקרה לקלט 474? מספר הספרות אי־זוגי ולכן אין חלוקה מלאה לזוגות; bytes.fromhex יעלה ValueError. פתרון כתוב צריך לכלול קלט, הנחה, פעולה, פלט ובדיקת קצה. אל תכריזו על הצלחה רק משום שהפלט נראה כמו מילה: כאן יש גם התאמה לאורך ולמפרט. בתרגיל חדש אפשר להחליף את הטקסט ולבדוק שגם ההמרה ההפוכה מחזירה את אותו רצף בייטים.

הצעד הבא בלמידה

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

לשיעור הקשור בקורסלמפת הקורס וחלוקת התוכן

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

להמשך תרגול

מקורות טכניים וגבולות התרגול

המקורות מסבירים טכנולוגיה. הם אינם אסמכתה למבנה מיון צבאי. התוכן כאן עצמאי; הנחיות הזימון האישי הן הקובעות. מצאתם שגיאה? כתבו לנו.