19.3.2011

hackthissite.org - Application Challenge 1,2,3,4,5,6 (easy)

מסתבר שיש די הרבה כניסות לבלוג שלי דרך קישורים הקשורים לאתר hackthissite (שמתם לב לצירוף הצמוד? XD )
חח קיצור אחרי אופורייה מטורפת של פיטרון שלב 5 ועל אותו הגל פיטרון של שלב 6 אני מפרסם את כל הדרכים לפטרון החלק הקל של אתגר משימות התוכנה - משימות 1 עד 6 :)  יאללה D: או כמו שאני תמיד אומר....
Last Go YoYo!!


שלב ראשון!

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


שלב שני!

כתוב במפורש שאנו חייבים להתחבר לאינטרנט! זאת אומרת שתוכנה מאמתת את הסיסמה שלנו עם סיסמה ששמורה איפה שהוא באינרנט , אישית כשאני ניכנסתי לזה בפעם הראשונה ישר פתחתי Wireshark (הוא כבר היה פתוח חח)  מצאתי את המיקום של הקובץ באינטרנט. גם חיפוש של המחרוזת "http" בקוד אסקי של הקובץ יניב את אותה התוצאה :)


שלב שלישי!

 שוב אנו חייבים להיות מחוברים לאינטרנט , לאחר שימוש בתוכנה Wireshark (שוב חיפוש של המילה HTTP תמצא אותו הדבר) נימצא הקישור הבאה:
/missions/application/app3/auth.php?key=
כמובן שהכתובת המלאה היא:
http://www.hackthissite.org/missions/application/app3/auth.php?key=XXX
עבור כל סיסמה שאנו כותבים במקום ה-XXX הקוד PHP מחזיר האם זו הסיסמה או לא - הקובץ EXE שלנו בודק מה האתר מחזיר ועל פי זה הוא מציג או לא מציג לנו את הסיסמה - כלומר... אם הסיסמה שגויה האתר מחזיר FALSE התוכנה רואה שהוא מחזיר זאת ואז היא כותבת שהסיסמה שגויה :) נישאלת השאלה - אם נערוך את התוכנה כך שהיא תציג את הסיסמה במידה והאתר החזיר פולס? במילים אחרות - מה יקרה אם אני משנה את המילה טרו לפולס בתני :
if ($wordfromsite == "True") reutrn ThePassword
אז לא בעיה :) אני עורך את הקובץ עם התוכנה hex idetor אבל אפשר עם כל תוכנה , פשוט חפשו את המילה False ותשנו אותה ל true :) עד שזה יעבוד חח 


שלב רביעי!

חחח כמה שברתי ת'ראש עם יותר מי 5 תוכנות בניסיון לפטור את זה XD בכל מיקרה בסופו של דבר עזבתי את הדרך הקונבנציונלית להלכתי בדרך שלא ניראת כל כך יפה בכללי (בדיאבד אין דבר כזה דרך לא קובנציונלית!) אז פרשתי לגוגל בחיפוש אחר decompiler של VB , המטרה: לראות את קוד המקור של התוכנה וכך למצאו את הסיסמה :) חיפושי בגוגל הביאוני אל התוכנה  VB Decompiler Lite - חמודה מאוד - הדבר שהיא צריכה לעשות הוא להציג את הקוד סורס של קובץ VB , (אישית לא הצלחתי לעשות את זה - התוכנה קורסת :\ ) אך במקום לעבור על השורות סורס עשיתי משהו אחר, הקטע הוא שהתוכנה מספקת דבר נוסף =>
אז למי שלא מבין VB :
VB היא שפת איבנטים - כלמור - כל פעולה מסויימת מריצה קטע קוד שכתוב לאותה פעולה
דוגמה: אם תחת האיבנט command1_click כתבתי msgbox("jf48jds") X מה שקורה שברגע שהפעולה CLICK (לחיצה) הופעלה על האבג'קט command1 (שמו של הכפתור) אז קטע הקוד ירוץ.
התוכנה מראה לנו את כל האיבנטים שמופיעים בתוכנה - יש 7 איבנטים -
הראשון איבנט שרץ כאשר התוכנה ניפתחת
השני השלישי והרביעי איבנטים שקשורים ללחצן הראשון
חמישי שישי שביעי איבנטים שקשורים ללחצן השני
הדבר הנוסף שהתוכנה מציגה לנו (מסומן בירוק) הוא השורה בזיכרון בה מתחיל אותו קטע קוד שקשור לאותו איבנט
כלומר - בשורה 402AD0 מתחיל הקטע קוד של שניכתב לאותו אינבט \ במיקרה של השורה הזו זה האיבנט Command1_click
נישאל את השאלה - מה יקרה אם יתחיל לרוץ במקום האיבנט של הMuseMove האיבנט של ה- CLICK ? כאילו יש לי את השורות ואני יכול לשנות אותם אז כאילו למה לא? :)
מי שעד לא הבין מה לעשות פשוט לכו לתוכנה ODBG תגיעו לשורה של ה MuseMove ותשנו את הקטע קוד שכתוב שם (posh משהו) ל jmp XXX כאשר XXX זו השורה של האיבנט Click לאחר מיכן תזיזו את האחבר על הלחצנים ותיראו מה קורה :)




לפני השלבים הבאים טיפה רקע על התוכנה שנישתמש בה -
ODBG - גיליתי את התוכנה הזו לפני כמה שבועות , משהו עצני :)
הורדה וזה: http://www.ollydbg.de
טיפה רקע על התוכנה:
קובץ EXE שמתפיס על חלון ה- CMD (השחור שניפתח ברגע שאנחנו לוחצים על הקובץ) את המילים HELLO WORLD כתוב בכניראה ב C/C++/C# וכו' אך איך לעזאזל המחשב יודע לפרש את פקודות ה C ? איאפשר לדבר עם המעבד ולומר לו על פעם שאתה רואה X תעשה Y זה לא עובד ככה, אבל מה שכן עובד זה מספר פקודות ששמורות לו והוא יודע לבצעה אותם כמו תוקי , למשל אם אני יגיד למעבד תכניס את המספר 1 למשנה בשם AX , את זה הוא יודע לעשות יפה מאוד :) איך מהכנסה של הערך 1 לעוגר (משתנה) AX אני יוצר את המנועה הגרפי של קריסיס 2 זה סיפור שלם בפני עצמו - תורה שלמה וגדולה מאוד בשם אסמבלר - אך לעיינינו שלנו נבין בסך הכל של מה שהתוכנה אומרת למחשב לעשות אנו יכולים לראות , לשנות , להוסיף, ולימחוק :) ועכשיו מתחיל הכייף D:
מה ש-ODBG עושה היא נותנת לנו את האפשרות לראות , לשנות , להוסיף, ולימחוק בצורה קלה יפה ופשוטה מאוד במקום לעשות זאת ידנית (אפשרי לגמרי).

עד אתר נורא יעיל - http://home2.paulschou.net/tools/xlate
המרה ישירה מי בסיס 2 10 16 64 אסקי והצפנות MD5/4/2 

 שלב חמישי!
החשיבה מאוד פשוטה - אני מכניס סיסמה - התוכנה משווה אותה עם הסיסמה שהיא יודעת שהיא הנכונה - במידה שהן אותו הדבר מחזיר נכון - במידה ולא - שגויה , הגיוני לא? עכשיו נבודד פה משהו חשוב - משווה את הסיסמה לאותה סיסמה שלי - אם אני ימצא את הסיסמה שהתוכנה משווה לסיסמה שלי.... יפה לא? הקטע שהסיסמה לא שמורה ככה סתם כמו במשימה הראשונה הוא יוצר את הסיסמה בעצמו ככה שאיאפשר למצאו אותו בסורס.
אז כמה טיפים לפריצה מהסוג הזה :
1-תלמדו אסמבלי
2- תמיד תתחילו מהסוף! תחפשו את השורת ה ASCII שאומרת שהסיסמה שהוכנסה לא נכונה , מאותה שורה תעלו למעלה ותחפשו איזה קפיצה מביעה לאותה שורה je jb וכו' , לפני אותה קפיצה צריכה להיות הפקודה CMP שמשווה בין שני ערכים.
אחד הערכים הוא הסיסמה שלכם - והשני זה הסיסמה הנכונה -

אז אחרי חיפושים הגעתי לדרך הזו -
הכניסו את התוכנה ל ODBG תחלצו ctrl + G תגיעו לאדררס 004010C3
השורת קוד צריכה להיות כדיל כמאן :
CMP EAX,DWORD PTR SS:[EDX*4+EBP-18]
השורה הבאה:
JE SHORT 004010DA

אז ככה , השורה הראשונה משווה בין הערך שנימצא בעוגר EAX לערך שנימצא בזיכרון במקום:
SS:[EDX*4+EBP-18]
התוכנה ODBG מראה את הערכים הנימצאים בכל אחד מהמקומות האילו ברגע שהיא נימצאת על השורה 
אז מה שנעשה נלחץ דאבל קליק על הקוד אסקי של הפקודה (עמודה שנייה) מה שגורם למספר השורה להיות באדום (עמודה ראשונה) מה שעשינו הוא לומר לתוכנה לעצור את הרצת התוכנה ברגע שהיא תגיע לשורה הזו
אחרי כל זה נילחץ על לחצן ההרצה (משולש פונה ימינה כמו תמיד) בחלון התוכנה שניפתח נכניס את הסיסמה 123456 ואנטר - ברגע התוכנה נימצאת על השורה 004010C3 ניתן ליראות למטה מיתחת לחלון הראשי חלון יותר קטן שם כתוב את הערכים שנימצים ב EAX / SS:[EDX*4+EBP-18] X - הערך כמובן מוצג ב Hex
אז פשוט נשתמש באתר http://home2.paulschou.net/tools/xlate על מנת לתרגם את האקסה לתווים.
עכשיו מה שנעשה זה נילחץ F8 פעם אחת, מה שעשינו היה לומר לתוכנה ODBG לבצע את השורה שהיא סימנה:
CMP EAX,DWORD PTR SS:[EDX*4+EBP-18]
ולעבור לשורה באה - >
JE SHORT 004010DA
מה שהשורה שנייה עושה נורא פשוט - היא קופצת לאדררס 004010AD רק במידה והדגל ZE דולק (1 ולא 0) 
הדגל ZE מושפע מהפעולה CMP (שורה ראשונה)  במידה והערכים שהשוונו באמת שווים אז הדגל הופך ל 1 אם הם לא אז הדגל הופך ל 0 , מין הסתם הערכים לא היו שווים כי הסיסמה שכתבנו 123456 היא לא הסיסמה הנכונה לכן לפני שנידרוש מהמחשב לבצע את הפדוה הזו (F8) נשנה ידנית את הדגל ZE ל 1 - אפשר לעשות את זה דרך החלון בצד ימין . נילחץ F8 התוכנה תקפוץ מספר שורות למעלה ואז נמשיך ללחוץ F8 עד שנגיעה שוב לשורה הראשונה וככה ונחזור על הפעולות - כל פעם נפענח עד חלק של הסיסמה עד שבסופו של דבר הקוד יסתיים. וזהו :)
שימו לב שהקוד אסקי של הסיסמאות הפוך! כלומר הוא לא משווה 1234 עם ASDF הוא משווה 4321 עם FDSA.

תמונה שסימנתי שם את כל מה שדיברתי עליו במשימה הזו:


שלב שישי!
שלב שישי בדיוק אותו הדבר כמו שלב 5! רק עם טריק קטן , אין לי מוסג איך או למה אבל כאשר מריצים את הקוד בתוכנה ODBG חלק מהפקודות (החלק שאנחנו רוצים) לא מופיעה בצורה טובה - אנחנו לא רואים שם דבר שאפשר לעבוד איתו (מי שיבדוק יבין על מה אני מדבר)  בישביל לפטור את זה צריכים לבצעה כמה פעולות , דבר ראשון הולכים לראש קטע הקוד שמשם הפקודות לא ניראות טוב (אצלי זה מישורה 004010D5) . זה מתחיל ישר אחרי הפקודה:
JMP SHORT 00401116
מה שעושים מסמנים הכל (קליק רצוף) משם עד סוף הבלוק הזה של הפקודת (אצלי זה שורה 004011C4
קליק ימיני על אחת השורות:
Edit => Binry Edit
מעתיקים את כל הקוד HEX שיש שם , לאחר מיכן חוזרים לשורה הראשונה (אצלי זו שורה 004010D5) לחצים רק עליה ולאחרי שרק היא מסומנת לחצים עליה קליק ימיני ושוב
Edit => Binry Edit
ובמקום השני מספרי HEX שיש שם מדביקים את כל מה שהעתקתם. עושים אישור וזה צריך לפתור את הבעיה
חוזרים על איכרון הפריצה של שלב 5 וסיימנו :) 

בהצלחה לכולם ! מקווה לתגובות לשם שינוי :) 
כל הזכיות שמורות ל Vendetta -  The Last Dimension

4 תגובות:

  1. תמות, אני שונא אותך מאוד!
    יחתיכת גאון!!!!
    ולא קראתי P:

    השבמחק
  2. Nice, but I expected to see more than just simpel hacking.

    Show me things that no-one showed me before!

    I wanna see a connection to physics..--> 'The Less Dimension'

    Be more CREATIVE!

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

    השבמחק
  4. Well..
    When is your next?

    השבמחק