CSAW 2017 - DNE
על DNE:
שם הקבוצה הוא ראשי התיבות Does Not Exist
ובנוסף מורכב מהאותיות הראשונות של שמות חברי הקבוצה. כולנו סטודנטים להנדסה בשנה הרביעית לתואר.
אנחנו גם הקבוצה הראשונה שסיימה את כל האתגרים בשלב הראשון ב-CSAW 2017. הידד!
Cryptography (1100)
Find the missing value - 100
האתגר:
האתר:
הבנו שצריך למצוא מה הערך 2017
יתן.
ניסינו להבין מה מספרים אחרים נתנו לנו אז החלפנו את 2017
ב-0
, 1
ו--1
. קיבלנו בהתאמה את הערכים -1
, 7
ו-7
. ניסינו עוד כמה מספרים והערך השלילי שלהם וגילינו שהערך המוחזר תמיד היה שווה, אז הזנו -2017
שנתן לנו 4309384346854701617671
.
הצלחנו!
---- Here Come Dots ---- - 200
האתגר:
הרמזים היו כל כך גרועים שאפילו לא אטרח לכתוב אותם כאן.
אחרי המון חקירה ונסיונות הצלחנו לחלק את המספרים לשלוש קבוצות: חזקות של 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
האתגר:
האתר:
רעיון דומה לאתגר הראשון מהסדרה.
הפעם קיבלנו מספרים ארוכים בייצוג דצימלי, אז ניסינו לתרגם אותם ליצוג הקס. מסתבר שהתוצאה היתה ה-md5 של הקלט עם גרשיים. חישבנו את ההאש של "2017"
והמרנו לייצוג הדצימלי.
הצלחנו!
Find the missing value III - 500
האתגר:
האתר:
שוב אותו רעיון.
הפעם התוצאה הייתה האשי md5, למזלינו גוגל הם מדהימים וסיפרו לנו שההאש שמקבלים עבור הקלט 1
(e4a7afdacb8b63d1de55011d2202c77e) זה ההאש של הטקסט "7"
וכך הלאה לפי המספרים מהאתגר הראשון. אז לקחנו את הדגל מהשלב הראשון, עטפנו בגרשיים וחישבנו את ה-md5 שלה.
הצלחנו!
Machine Learning (900)
Spam classifying - 100+300+500
האתגר:
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
האתגר:
זהו קוד מכונה 8086, הרצנו עם סימולטור של דוס וקיבלנו את התוצאה.
הצלחנו!
Can you run this code? #Harder - 500
האתגר:
הקוד פה זהה לקוד מהאתגר הקודם, ההבדל היה שהקלט פה ארוך יותר אז התוכנית לוקחת יותר זמן. האמולטור שלנו היה נורא איטי אז התקנו את המערכת FreeDos על דיסק און קי והפעלנו את המחשב ממנו. אחרי כמה שעות...
הצלחנו!
Web (900)
Fraud Transactions - 100
האתגר:
האתר:
התחברנו לאתר עם השם משתמש admin
והסיסמה admin
(זה לא הקטע של האתגר) והגענו לעמוד הזה:
מן הסתם לחצנו על הכפתור האדוםם הגדול Show me the file!
אך לדאבונינו:
אבל איך הם יודעים איזה משתמש אני? עוגיות!
מובן מאליו שזיהוי משתמש על ידי ייצוג בבסיס 64 של ה-sha1 של השם משתמש שלו זה רעיון חכם. חישבנו את ההאש של MrFraud
והמרנו לבסיס 64. בום.
הצלחנו!
Hack my Account - 300
האתגר:
האתר:
השם משתמש וסיסמה היו שמורים בפליינטקסט בקוד JavaScript של האתר. הקאץ' היה שלא היה ניתן להעתיק, להדביק, למחוק, ללחוץ טאב, והיה זמן מוגבל להזנת הפרטים. איזה מזל שאני מקליד מהר.
הצלחנו!
Could you log as admin? - 500
האתגר:
האתר:
בהתחלה חשבנו שאולי צריך לבצע איזשהו הזרקה ל-AngularJS, אבל שמנו לב לעוגיה אחת שמשתנה רק לפי הפרמטר log_sequence
. היה גם טיימר לעמוד שאיפשר להישאר באתר במשך 120 שניות; כל פעם שהזמן נגמר log_sequence
חזר לאחד. אחרי מליוני נסיונות הצלחנו סוף סוף להשיג עוגיה מתאימה. עוגיה נוספת שהאתר השתמש בה לזיהוי הכילה את ה-md5 של השם משתמש. אז לקחנו את העוגיה הראשונה שמצאנו ואת ה-md5 של admin
חיכינו שהטיימר יפקע וניסינו להתחבר עם העוגיות המזוייפות.
הצלחנו!
Forensics (650)
e-sumo - 100
האתגר:
ה-pcap הכיל מעקב אחרי תזוזות עכבר. בעזרת ספריה גרפית ש-Internal Error ⚠️
כתב הצלחנו לצייר מחדש את התמונה שהכילה את הדגל.
הצלחנו!
Missing bytes - 250
האתגר:
בעזרת HexEdit וגוגל הגענו למסקנה שהקובץ הוא קובץ "MIDI" המידע הזה נתן לנו את ארבעת הבתים הראשונים 4D 54 68 64(=MThd)
. היינו צריך לחקור איך קבצי "MIDI" בנויים על מנת שנוכל להפעיל את הקובץ ולשמוע מה מתנגן. היינו צריך למחוק בית מיותר מהסוף ולהוסיף "בתי סיומת" (00 FF 2F 00
) ולתקן את הבית שאמר מה גודל הקובץ. אחרי כל השינויים האלה הצלחנו להפעיל את השיר וגילינו שמדובר ב-"למרים טלה קטן". אך היו חסרים שני התוים האחרונים, בעעע, אבל לפחות אנחנו יודעים מה צריך להוסיף. אחרי המון זמן וקרב קשה, הצלחנו למצוא איך לייצג את התוים החסרים. תיקנו שוב את הבית שמייצג את גודל הקובץ ובכך להשלים אותו. לקחנו את ארבעת הבתים הראשונים ואת 16 הבתים האחרונים ואכן זה היה המפתח.
הצלחנו!
Here the password -300
האתגר:
ב-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
שלא נגענו בו. ניסינו לשלוף מהקובץ הזה את הבתים לפי המספרים ברשימה המוזרה, ומה מתברר?
הצלחנו!