تحية الى كل habrachitateli. لقد مرت ثلاثة أسابيع منذ أن
اقترحت على أولئك الذين يرغبون في حل CTF ، وأعتقد أنه حان الوقت لنشر تحليل المهام. من تجربتي الخاصة ، أعلم أنه من العار أن أكون في موقف قضيت فيه الكثير من الوقت في مهمة ، لكنني لم أجد حلاً ، لذلك قمت بنشر تحليل المهام. يتم تقسيم الحلول إلى خطوات وإخفائها تحت المفسد بحيث يمكنك بعد أي خطوة حل المشكلة بنفسك ، والتغلب على لحظة صعبة.
XT_CTF_01XT_TASK_101الخطوة 1افتح الأرشيف وشاهد أسماء المجلدات الطويلة. يحتوي المجلد الأخير على ملفات ، ولكن بدون كلمة مرور ، فإن محتوياتها غير متوفرة.
نكتب أسماء المجلدات:
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
2346ad27d7568ba9896f1b7da6b5991251debdf2
e3cbba8883fe746c6e35783c9404b4bc0c7ee9eb
bef21e9bfcf9fab0a5aebd46a735efe5434da96b
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
نحن ننقل التسلسلات إلى Google ونكتشف بسرعة أن هذا هو sha1 من الكلمات:
password
hash
1000
letters
a
عند تجميعها جميعًا ، نفترض أن كلمة المرور عبارة عن علامة تجزئة مكونة من 1000 حرف "a". إذا تم استخدام sha1 للكلمات ، فسنحاول هنا - 291e9a6c66994949b57ba5e650361e98fc36b1ba. نقوم باستخراج الملفات ، مع التأكد من صحة كلمة المرور.
الخطوة 2يُظهر فحص الملفات أنها جميعًا مكونة وفقًا لمبدأ عام تقريبًا: اسم تنسيق xt + number ، ومحتويات بضعة أسطر ، حيث يكون الحرف الأول من بضعة أحرف والثاني عبارة عن سلسلة من الأحرف السداسية عشرية. من غير المهم إلى حد ما مراعاة التسلسلات السداسية العشرية ، حيث تحتوي على 79 حرفًا لكل منها (باستثناء الملف xt121785230414240585522142219912 ، حيث يوجد 58 منهم) - هذه بالتأكيد ليست علامات تجزئة وليست شيئًا مشفرًا.
نظرًا لأنه مماثل في كل مكان ، وهناك عدد أقل في ملف واحد فقط ، يمكن افتراض أنه يجب الجمع بين جميع سلاسل سداسي عشرية ، والجزء الأصغر هو الجزء الأخير فقط. يبقى لفهم النظام. كان من الممكن اللعب بالأسماء ، ولكن لا تحصل على أي شيء مثير للاهتمام ، ولكن إذا كنت تهتم بالسطور الأولى من الملفات ، يمكنك أيضًا العثور على نمط باستخدام النظرة.
هنا ، سأشير إلى بعض الخطوط: هو ، li ، n ، o ، ne ، mg ، si ، ca ، cu ، zn ، br ، kr ، ag ...
عندما تكون قريبة ، فمن الأسهل بكثير التعرف على تسمية العناصر الكيميائية فيها. نفتح الجدول الدوري ونجمع تسلسل سداسي عشرية في ملف واحد (هناك 53 ملفًا في المجموع ، وهذا هو رقم الجزء الأخير برمز i الذي يتوافق مع Yod ، 53 عنصرًا).
والنتيجة هي ملف PNG مع مستطيل أخضر.
الخطوة 3من غير المحتمل أن يتم تضمين بيانات التعريف في الملف في شكل واضح ، نظرًا لأننا نرى جميع البايتات في التمثيل السداسي. لذلك ، سوف نعمل مع الصورة نفسها. قد تلاحظ (ليس بالعين بالطبع ، ولكن باستخدام الأدوات) أن أكثر من لون واحد يستخدم فعليًا. سنستخدم التعبئة ونرى الدليل إلى الخطوة التالية.

الخطوة 4نقوم بتجزئة جميع أسماء الملفات وترتيبها وفقًا لترتيب الخطوة السابقة.
696e7400b8a8c7da1c52e63550ddfdf8ae03be73
206d6100f4eb7c768890e8502db2bdeb81718301
696e2800f1c5c0df7676667ffca16856e808f9dd
297b69008e0d05b67df33c751da3c6f17a3fdb9d
6e742000bf96cea16e609731aa7397ac2b9f7b15
613d3400d2fedbf43ad7c43d678382d2ef83dde8
36303900b909f396c69c6d47ccb623cc83d5e2ea
313132007f6fdde9d3abad5545f44b2d2661b0be
3b696e0002582f22cab7aeaf730680b87780279a
74206200267e505a621cf264e303d3df63222fa7
3d343600ac031f166103b5319a273a867d5247ae
36393700d9e521b0e0d488b47fde51e5f5f9650d
37323b00bdf3caa241b2936f0355ad89e420389c
696e7400a1f9f8e62cd64c8e25d852e433bda80c
20633d009932d3b69b7a74296c7b75894bcddbc1
373639000ca31548a80fe28adf263bbe89f03069
33393400f56920f247d4d66798bb2c54e3db668c
373b6900222283ee79a5e7e3e79d55d4b159ffb1
6e742000fac60ac1f78aa90201e98b30a9c4adbc
643d3700b55bc0dda8bd748983716018b29fbd6f
38323300176db95a8aa4aaf1770346c353fd4753
32313400644e234a3899bd84e9f7d61a12bfecab
3b696e00654b4b7d8fb3b022777c6346342eba91
742065009720d2693f833788e69a6641e8de22f6
3d363800b1e40956ec8ca6a64013c8a651eff0f7
3435340008b5419f5139553c85b605009e3fb343
38393b004e5d66b6980c7cf14dc9bf0acf09e444
696e7400e648ffad4cde46b4d845f1ffad075da5
20663d00b9bdab8cb8721581f5aa8a2c2522d9de
3334330054fb4abaf144e818ec1199b7b4ffec47
34353900378490c3ba53a356327af1bbb2d2c8b0
313b69008803024e711baf3695402d3a13e0c905
6e7420006434f491ab51a923995a3daf56a65f5e
673d3800c5198ae1565cc5744d23ac492f6d2506
3231380000217a2c380bf9c9a6e122b1c01e90ea
373339003ef4f423f0d9c54ea5d8fbe4d8bf518c
3b70720073caad02c9cba60debf81f72c0ac23ad
696e7400d9ddb857a7608947aae60ed6d054c039
6628220061a3a81dcc20ce43903a18cea28b77db
2573250065285f647ed3e22a9233974ac24509a1
73257300678138427cc07ee072c987583db2fc5e
25732500d183d5303ed6bda0606eb5e4ccc1e7c8
73257300c5e9d7bfdb76b5fee122fe57bc8aa81a
25735c003675c4f732d95ae6a0d9bcc6769f94ca
6e222c0088503423d1f56148bbf2573a6e2e0518
26612c007c8d1d6b90d252fa7b2084bd8695a8f9
26622c00ec96a4edbdeb286484af38395a3fc928
26632c004a1db36cdef743283e6bc853b6995555
26642c00dd66db502138413e272deb2da78d4f57
26652c00bb1785b4e41444da4230b602f1860557
26662c00e739c24f55c0899b8eae2a948622c7d7
26672900f4b4843d0056571d293bec879cd1968f
3b7d20006750ebb44ffd784dc8afdd5b0f76816a
إذا كنت تفعل كل شيء باستخدام الأقلام ، فستلاحظ بسرعة كبيرة أن 4 بايتات هي دائمًا صفرية ، وعلى يسارها بعض الأحرف المطبوعة. نترك لهم فقط ، وجمع في سطر واحد.
نحصل على السطر التالي:
int main(){int a=4609112;int b=4669772;int c=7693947;int d=7823214;int e=6845489;int f=3434591;int g=8218739;printf("%s%s%s%s%s%s%s\n",&a,&b,&c,&d,&e,&f,&g);}
نقوم بتشغيل هذا الرمز في C ، ونتيجة لذلك نحصل على العلم. نتحقق من التجزئة للتأكد مرة أخرى - نعم ، هذا هو العلم المطلوب.
XT_TASK_102الخطوة 1افتح الأرشيف وانظر على الفور أسماء الملفات في عرافة. محتويات الملف غير متوفرة لأن كلمة المرور مطلوبة. دعنا نبدأ التواء الأسماء.
جميع الأسماء هي نفس الطول ، باستثناء ملف به الملحق 64F00000 (وهو أقصر). بشكل عام ، الامتدادات غريبة وغير نمطية. لكن من السهل جدًا ملاحظة أن جميع الملفات لها أطوال امتدادات مختلفة ، وهي تتراوح من 1 إلى 7. ويكون الاسم الذي يحتوي على أطول امتداد هو الأقصر. من المنطقي أن نفترض أنك بحاجة إلى الجمع بين جميع سلاسل سداسي عشرية وفقًا لأطوال امتدادات الملفات.
نحن نحفظ تسلسل وحدات البايت بشكل منفصل ، مع العلم أن هذا هو أرشيف 7z ، منذ أول وحدتي بايت (0x37 0x7a - 7z).
الخطوة 2الأرشيف الثاني محمي مرة أخرى بكلمة مرور ، لكن هذه المرة لدينا أسماء الملفات القصيرة ومحتويات الملفات الصغيرة. من الجيد أن يعرض عارض الأرشيف البيانات الوصفية للملف ، أي الاختبارات الخاصة بهم.
على الرغم من حقيقة أن crc غوغل سيء إلى حد ما ، لا يزال بإمكانك التحقق من جميع التسلسلات وتجد أنه بناءً على طلب crc 90c1667d ، لا يزال هناك نموذج أولي لـ "أربعة". أو قم فقط بتسلسل ثلاث بايتات لأقصر الملفات. أي من الطرق أدت إلى حقيقة أن محتويات الملفات تم تثبيتها بسهولة - كانت هذه هي الأرقام الإنجليزية "واحد" ، "اثنين" ، "ثلاثة" ، "أربعة" ، "خمسة" و "ستة". ليس لدينا خيارات سوى الانضمام إلى أسماء الملفات بهذا الترتيب. نحصل على VVNFIENSQzMy. نتحقق من كلمة المرور للأرشيف الأول - تناسبها.
الخطوة 3قد تلاحظ مذيعو المراقبين ، حتى قبل كلمة المرور ، أن crc32 من ملفات الأرشيف يحتوي على نموذج محدد إلى حد ما ، وهو 0xC0DExxxx. لا توجد مثل هذه المباريات في CTFs.
الملفات نفسها هي صور PNG مع النص. نظرًا لأننا في كل خطوة نظرنا فيها إلى crc32 ، فإن الأمر يستحق المتابعة للقيام بذلك. بعد التحقق من النص الأول من الصورة (على سبيل المثال ، qnGyaQBc) ، يصبح من الواضح أننا على المسار الصحيح ، لأن crc32 هو 0xc0de0831. نحن نعتبر crc من كل ما تبقى ونجمع في كومة واحدة.
اتفاقية حقوق الطفل من الصور:
0xc0de094e
0xc0de054e
0xc0de0d7d
0xc0de0343
0xc0de0b52
0xc0de0734
0xc0de0154
اتفاقية حقوق الطفل من النص:
0xc0de0831
0xc0de0430
0xc0de0c35
0xc0de027b
0xc0de0a33
0xc0de0654
0xc0de0058
نحن نطرد الجزء المشترك ، ونرى أنه من قيمة البايت الأول من الاثنين يمتد من 0x00 إلى 0x0d. يبدو أنه رقم تسلسلي. نجمعها ، نتلقى العلم. نحن نتحقق من sha1 ونتأكد من أن كل شيء صحيح.
XT_QUEST_103list1إعطاء سلسلة من الأرقام. نحن فقط نأخذ الأحرف بالأرقام المشار إليها من البطاقة ، مع ترقيم من فواصل الأسطر والخدش. من المنطقي كتابة هذا الإجراء - ستكون هناك حاجة إليه أكثر من مرة.
الإجابة: awEs0me_sTart
list2الكثير من الأرقام. يشير اسم الملف إلى أنك بحاجة إلى معرفة عدد الأرقام 5. فنحن لا نحسب عدد الأطفال فقط ، ولكن عمومًا كل الأرقام من 0 إلى 7. نحصل على التسلسل: 135 ، 95 ، 61 ، 27 ، 58 ، 57 ، 85 ، 190. وضعنا على البطاقة ، نحصل على الجواب.
الإجابة: b1g_sTEp
list3نرى صورة ذات كثير الحدود. نحن نستبدل n من صفر إلى 9 ، حيث ننصح بإدخال اسم الملف ، نحصل على تسلسل ، عند تثبيته على البطاقة ، يعطي إجابة.
الجواب: coOl2math!
list4اسم ملف غريب ومحتوى غريب. إذا كنت google fdhvdu ، فمن بين النتائج غير ذات الصلة ، يمكنك العثور على إشارة إلى أن هذه الكلمة قيصر المشفرة بواسطة تشفير قيصر هو تحول من 3 أحرف أبجديًا. بعد فك ترميز المحتويات ، نرى أرقامًا رومانية. أعتقد أنه من الواضح ما يجب القيام به مع سلسلة من الأرقام.
الإجابة: dOinG_w3ll
list5محتويات المهمة حرفيا أنفسهم ما يجب القيام به. تجزئة الملف ، نحصل على 20 بايت ، والتي يمكن تفسيرها كسلسلة من الأرقام للبطاقة.
الإجابة: exceLlenT_impECc4ble
visual1إننا نقوم بتركيب نص المهمة على نص الخريطة ، علاوة على ذلك ، "نقوم بتثبيته" حرفيًا.
الجواب: fa5t!
visual2هناك 840 أصفار وتلك الموجودة في نص المشكلة. نظرًا لأن المظهر مرئي ، فنحن نحاول الحصول على تمثيل مرئي. إذا تم تقسيم النص إلى 5 أسطر من 168 حرفًا لكل منها ، يمكنك رؤية التسلسل الذي يؤدي إلى الإجابة.

الإجابة:
go_fUrth6r visual3يخبرنا اسم الملف مباشرة تمامًا عن الدومينو. نحاول توصيل المفاصل السداسية والحصول على سلسلتين. واحد دائري وغير مثير للاهتمام ، والثاني يمكن اعتباره سلسلة من الأرقام للبطاقة. والنتيجة إما إجابة أو إجابة بترتيب عكسي.
الإجابة: heRoic_effOr7s
visual4يتم إعطاء ستة عشر أرقامًا ست عشرية والتي توجد بها بوضوح وحدات بت كثيرة. نترجم الأرقام باستخدام آلة حاسبة ونعيد حرفيًا "فرض". الأصفار بت علامة الأحرف المطلوبة. نقرأ الرموز من أعلى إلى أسفل ، من اليسار إلى اليمين.
الإجابة: ih8BiTs!
visual5اسم الملف مرة أخرى يعطي تلميحا. "B3s23" هو تسمية التكوين لحياة اللعبة. نأخذ بعض المحاكاة عبر الإنترنت ، وأدخل الموقع الأولي ، وانتظر خمس حركات ونقرأ عدد الخلايا الحية في الصفوف (ما عليك القيام به فقط الذي لا يزال يخبر اسم الملف).
الإجابة: jUsT_9ood
prog1في نص المشكلة ، نرى شيئًا ما يشبه آلة تورينج ثنائية الأبعاد ، والتي يجب القيام بها فقط.
الإجابة: k1l0_Byte
prog2توفر المهمة بشكل صريح الكود الخاص بـ brainfuck ، ولكن إذا قمت بتشغيله على المحاكي ، فسيقوم البرنامج بعرض رسالة مفادها أن المهمة ليست متعلقة بـ brainfuck. نعم ، تحتاج فقط إلى حساب عدد الأحرف في كل سطر والتطبيق على الخريطة.
الإجابة: l1kEl1On!
prog3Brainfuck مرة أخرى ، ولكن هذه المرة الختام يتفق معنا. التسلسل المطلوب للبطاقة يكمن في الذاكرة.
الإجابة: moRe_1nfO2me
prog4ومن ثم brainfuck. نبدأ والبرنامج يعرض لنا رسالة أنه لا يوجد كلمة مرور. لا شيء مثير للاهتمام في الذاكرة سواء. يجب أن نفهم الرمز.
يتكون الكود من ثلاثة خطوط. يعين الأول بعض القيم ، والثاني أيضًا ، يعرض الثالث حالة الذاكرة على الشاشة.
نزيل السطر الثاني ، ونعمل ونحصل على تسلسل البطاقة.
الإجابة: nO_baRr13rs
prog5المهمة الأخيرة. رمز Brainfuck مرة أخرى. نرى إشارة إلى أننا بحاجة إلى حساب بعض الوظائف من سطر ما من الخريطة والرمز. نقوم بتشغيل الكود ، والذي يترك تلميحًا في الذاكرة بأن الوظيفة المطلوبة هي فك شفرة base64. نحن نتحقق من خطوط الخريطة لمعرفة ما سيحدث إذا تم فك تشفيرها من base64. فجأة ، يتم فك تشفير السلسلة KysrWz4rPis8PC1d في +++ [> +> + << -]. نقوم بتشغيل الشفرة مع هذه الإضافة ونرى التعليمات الخاصة بتضمين جميع الأحرف في كل سطر من خطوط الخريطة. ستكون النتيجة هي كلمة المرور الأخيرة.
الإجابة: ofF1ci4l!
هذا كل شيء. لكل من شارك - شكراً ، إذا كان لديك أي أسئلة ، اسألها في التعليقات.