CSAW 2017 - DNE

על DNE:

שם הקבוצה הוא ראשי התיבות Does Not Exist ובנוסף מורכב מהאותיות הראשונות של שמות חברי הקבוצה. כולנו סטודנטים להנדסה בשנה הרביעית לתואר.

אנחנו גם הקבוצה הראשונה שסיימה את כל האתגרים בשלב הראשון ב-CSAW 2017. הידד!

Cryptography (1100)

Find the missing value - 100

האתגר:

Find the missing value

האתר:

Find the missing value - website

הבנו שצריך למצוא מה הערך 2017 יתן.

ניסינו להבין מה מספרים אחרים נתנו לנו אז החלפנו את 2017 ב-0, 1 ו--1. קיבלנו בהתאמה את הערכים -1, 7 ו-7. ניסינו עוד כמה מספרים והערך השלילי שלהם וגילינו שהערך המוחזר תמיד היה שווה, אז הזנו -2017 שנתן לנו 4309384346854701617671.

הצלחנו!

---- Here Come Dots ---- - 200

האתגר:

Here Come Dots

הרמזים היו כל כך גרועים שאפילו לא אטרח לכתוב אותם כאן.

אחרי המון חקירה ונסיונות הצלחנו לחלק את המספרים לשלוש קבוצות: חזקות של 2, מסדרת פיבונאצ'י, וכל השאר. כתבנו קוד פייתון שיחליף כל קבוצה ב--ת . או ואת הקוד מורס שיצא תרגמנו לאנגלית.

original_list = [256, 21, 89, 217, 1024, 2745, 128, 233, 1024, 256, 1001, 8192, 987, 4096, 16384, 513, 132, 513, 610, 512, 2048, 344, 233, 89, 55, 513, 610, 256, 344, 4096, 2745, 144, 32, 34, 8192, 610, 89, 217, 742900, 1729, 21, 1332, 16384, 256, 16384, 16384, 513, 4096, 1001, 42, 126, 1024, 8192, 34, 32, 2745, 4096, 89, 16384, 512, 730, 1024, 987, 344, 55, 13, 4096, 2198, 42, 1332, 512, 32, 1332, 128, 8192, 2048, 344, 14, 2198, 987, 16384, 610, 2048, 344, 610, 126, 256, 512, 610, 128, 1001, 256, 512, 34, 21, 64, 377, 126, 233, 4096, 16384, 8192, 344, 21, 89, 8192, 126, 8192, 2048, 144, 217, 55, 128, 610, 34, 256, 126, 233, 2048, 89, 4096, 126, 987, 256, 610, 512, 730, 233, 13, 987, 1001, 1024, 126, 1024, 8192, 34, 34, 55, 217, 377, 34, 144, 55, 144, 2745, 512, 13, 610, 21, 34, 2198, 89, 610, 64, 64, 64, 1729, 89, 1024, 13, 34, 8192, 89]

power_list = []
for i in range(20):
    power_list.append(2**i)

fibonacci_list = [1,1]
a = 1
b = 1
for i in range(20):
    c = a+b
    fibonacci_list.append(c)
    a=b
    b=c

ans1 = ""
ans2 = ""
for i in original_list:
    if i in power_list:
        ans1 += "."
        ans2 += "-"
    elif i in fibonacci_list:
        ans1 += "-"
        ans2 += "."
    else:
        ans1 += " "
        ans2 += " "

print(ans1) # .-- . .-.. .-..   -.. --- -. . -.-.--   - .... .   ..-. .-.. .- --.   .. ...   -.-. - ..-. ..--.- -... --. ..- -.--. -.-. -.-. --- . ..--- ----- .---- --... -.--.-
            # welldonetheflagisctf_bgu(ccoe2017


print(ans2) # -.. - -.-- -.--   .-- ... .- - .-.-..   . ---- -   --.- -.-- -. ..-   -- ---   .-.- . --.- --..-. .--- ..- --. .-..- .-.- .-.- ... - --... ..... -.... ..--- .-..-.
            # dtyywsatetqynumoäeqjugèääst7562"

האופציה הנכונה היא ans1 שנתנה: welldonetheflagisctf_bgu(ccoe2017.

הצלחנו!

Find the missing value II - 300

האתגר:

Find the missing value II

האתר:

Find the missing value II - website

רעיון דומה לאתגר הראשון מהסדרה.

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

הצלחנו!

Find the missing value III - 500

האתגר:

Find the missing value III

האתר:

Find the missing value III - website

שוב אותו רעיון.

הפעם התוצאה הייתה האשי md5, למזלינו גוגל הם מדהימים וסיפרו לנו שההאש שמקבלים עבור הקלט 1 (e4a7afdacb8b63d1de55011d2202c77e) זה ההאש של הטקסט "7" וכך הלאה לפי המספרים מהאתגר הראשון. אז לקחנו את הדגל מהשלב הראשון, עטפנו בגרשיים וחישבנו את ה-md5 שלה.

הצלחנו!

Machine Learning (900)

Spam classifying - 100+300+500

האתגר:

Spam classifying

Pretty standard machine learning stuff. We uploaded our result and got all three flags. (That sentence is pretty meaningless, but the solver didn't bother giving more info so...)

הצלחנו!

Reverse Engineering (600)

Can you run this code? - 100

האתגר:

Can you run this code

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

הצלחנו!

Can you run this code? #Harder - 500

האתגר:

Can you run this code - Harder

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

הצלחנו!

Web (900)

Fraud Transactions - 100

האתגר:

Fraud Transactions

האתר:

Fraud Transactions - website

התחברנו לאתר עם השם משתמש admin והסיסמה admin (זה לא הקטע של האתגר) והגענו לעמוד הזה:

Fraud Transactions - logged

מן הסתם לחצנו על הכפתור האדוםם הגדול Show me the file! אך לדאבונינו:

Fraud Transactions - alas

אבל איך הם יודעים איזה משתמש אני? עוגיות!

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

הצלחנו!

Hack my Account - 300

האתגר:

Hack my Account

האתר:

Hack my Account - website

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

הצלחנו!

Could you log as admin? - 500

האתגר:

Could you log as admin

האתר:

Could you log as admin - website

בהתחלה חשבנו שאולי צריך לבצע איזשהו הזרקה ל-AngularJS, אבל שמנו לב לעוגיה אחת שמשתנה רק לפי הפרמטר log_sequence. היה גם טיימר לעמוד שאיפשר להישאר באתר במשך 120 שניות; כל פעם שהזמן נגמר log_sequence חזר לאחד. אחרי מליוני נסיונות הצלחנו סוף סוף להשיג עוגיה מתאימה. עוגיה נוספת שהאתר השתמש בה לזיהוי הכילה את ה-md5 של השם משתמש. אז לקחנו את העוגיה הראשונה שמצאנו ואת ה-md5 של admin חיכינו שהטיימר יפקע וניסינו להתחבר עם העוגיות המזוייפות.

הצלחנו!

Forensics (650)

e-sumo - 100

האתגר:

e-sumo

ה-pcap הכיל מעקב אחרי תזוזות עכבר. בעזרת ספריה גרפית ש-Internal Error ⚠️ כתב הצלחנו לצייר מחדש את התמונה שהכילה את הדגל.

הצלחנו!

Missing bytes - 250

האתגר:

Missing bytes

בעזרת HexEdit וגוגל הגענו למסקנה שהקובץ הוא קובץ "MIDI" המידע הזה נתן לנו את ארבעת הבתים הראשונים 4D 54 68 64(=MThd). היינו צריך לחקור איך קבצי "MIDI" בנויים על מנת שנוכל להפעיל את הקובץ ולשמוע מה מתנגן. היינו צריך למחוק בית מיותר מהסוף ולהוסיף "בתי סיומת" (00 FF 2F 00) ולתקן את הבית שאמר מה גודל הקובץ. אחרי כל השינויים האלה הצלחנו להפעיל את השיר וגילינו שמדובר ב-"למרים טלה קטן". אך היו חסרים שני התוים האחרונים, בעעע, אבל לפחות אנחנו יודעים מה צריך להוסיף. אחרי המון זמן וקרב קשה, הצלחנו למצוא איך לייצג את התוים החסרים. תיקנו שוב את הבית שמייצג את גודל הקובץ ובכך להשלים אותו. לקחנו את ארבעת הבתים הראשונים ואת 16 הבתים האחרונים ואכן זה היה המפתח.

הצלחנו!

Here the password -300

האתגר:

Here the password

ב-pcap הזה היה לוג תקשורת טלנט שהכיל ייצוג בבסיס 64 של שני קבצים as.wav ו-items.zip. בהקס של הזיפ היה עוד קובץ אודיו חבוי. השמענו את האודיו הפוך בקצב מועט ושמענו iamdavej שהתברר להיות הסיסמה לזיפ. בקובץ זיפ היה קובץ csv שהכיל רשימה של פרטים רנדומליים כביכול.

Salt,1334
Milk,2069
Butter,2619
Mushrooms,3347
Carrots,3857
Peanut Butter,4697
Cookies,5597
Potatoes (Organic),6426
Tomato Sauce,7196
Eggs,7901
Rice,8684
Chicken (Fresh),9570
Olive Oil,10370
Soymilk,11014
Granola Bars,11896
Apple (Organic),12737
Hummus,13354
Pizza (Frozen),14013
Frozen Blueberries,14571
Cheese,15120
Bread (Sliced),15952

אבל עדיין היה לנו את הקובץ as.wav שלא נגענו בו. ניסינו לשלוף מהקובץ הזה את הבתים לפי המספרים ברשימה המוזרה, ומה מתברר?

הצלחנו!