حل المشاكل مع pwnable.kr 02 - تصادم. تجزئة الاصطدام

صورة

في هذه المقالة ، نتذكر التصادمات في وظائف التجزئة ، ونحل المهمة الثانية من الموقع pwnable.kr .

المعلومات التنظيمية
خاصةً لأولئك الذين يرغبون في تعلم شيء جديد وتطويره في أي من مجالات أمن المعلومات والحاسوب ، سأكتب وأتحدث عن الفئات التالية:

  • PWN.
  • التشفير (التشفير) ؛
  • تقنيات الشبكات (الشبكة) ؛
  • عكس (الهندسة العكسية) ؛
  • إخفاء المعلومات (Stegano) ؛
  • بحث واستغلال مواطن الضعف WEB.

بالإضافة إلى ذلك ، سوف أشارك تجربتي في الطب الشرعي للكمبيوتر ، وتحليل البرامج الضارة والبرامج الثابتة ، والهجمات على الشبكات اللاسلكية وشبكات المناطق المحلية ، وإجراء عمليات pentests واستغلال الكتابة.

حتى تتمكن من معرفة المقالات الجديدة والبرامج والمعلومات الأخرى ، أنشأت قناة في Telegram ومجموعة لمناقشة أي مشاكل في مجال التصنيف الدولي للأمراض. أيضًا ، سأدرس شخصيًا طلباتك الشخصية وأسئلتك واقتراحاتك وتوصياتك شخصيًا وسأجيب على الجميع .

يتم توفير جميع المعلومات للأغراض التعليمية فقط. لا يتحمل مؤلف هذا المستند أية مسؤولية عن أي ضرر يلحق بشخص ما نتيجة استخدام المعرفة والأساليب التي تم الحصول عليها نتيجة لدراسة هذا المستند.

اصطدام وظيفة التجزئة


تصادم دالة التجزئة هو زوج من الكتل x و y ، ناتج عن دالة التجزئة hash () والتي تنتج منها الكتلة z نفسها.

hash (x) = hash (y) = z

تصادمات ممكنة لأي وظيفة تجزئة على الإطلاق ، لأن مجموعة المدخلات أكبر بكثير من مجموعة مخرجات دالة التجزئة.

صورة

لذلك ، يتم تحديد استقرار وظيفة التجزئة من خلال ثلاث خصائص:

  • اللارجعة - عدم القدرة على استعادة رسالة بعثرة ؛
  • مقاومة الاصطدامات من النوع الأول - بالنسبة لرسالة واحدة ، من المستحيل العثور على رسالة ثانية تعطي نفس التجزئة بالرسالة الأولى ؛
  • مقاومة الاصطدامات من النوع الثاني - لا يمكنك التقاط زوج من الرسائل التي سيكون لها نفس التجزئة.

حل وظيفة الاصطدام


نضغط على الرمز الثاني مع تصادم التوقيع ، وقيل لنا إننا بحاجة إلى الاتصال عبر SSH بضيف كلمة المرور.

صورة

عند الاتصال ، نرى الشعار المقابل.

صورة

دعونا نعرف ما هي الملفات الموجودة على الخادم ، وكذلك ما هي الحقوق التي لدينا.

ls -l 

صورة

وبالتالي ، يمكننا قراءة التعليمات البرمجية المصدر للبرنامج ، حيث يوجد حق للقراءة للجميع ، وتنفيذ برنامج col مع حقوق المالك (تم تعيين بت لزجة). دعونا نلقي نظرة على نتائج الكود.

صورة

يتبع من الكود أن البرنامج يأخذ سلسلة مكونة من 20 حرفًا كمعلمة ، ويقوم بتمريرها إلى دالة تقوم بحساب التجزئة ومقارنتها بالقيمة المرجعية.

صورة

صورة

داخل الوظيفة ، يتم تقسيم سلسلة لدينا إلى 5 كتل من 4 بايت ، والتي يتم تحويلها إلى أرقام ، وبعد ذلك يتم إضافة هذه الأرقام. وبالتالي ، نحن بحاجة إلى 5 أرقام ، والتي ستعطي في المجموع 0x21dd09ec. استيفاء الشرط: 0xd1d905e8 و 0x01010101.

صورة

تحتاج الآن إلى تمرير أحرف غير قابلة للطباعة إلى سطر الأوامر كمعلمة للبرنامج. للقيام بذلك ، نستخدم بناء جملة bash ومترجم python. من المهم ملاحظة أنه عندما يتم تخزين هذه الأرقام في ذاكرة الكمبيوتر بالترتيب العكسي ، فسنقوم بتسليمها.

 ./col $(python - “print('\x01\x01\x01\x01'*4 + '\xe8\x05\xd9\x1d')”) 

صورة

نتيجة لذلك ، نحصل على ثلاث نقاط.

صورة

لقد درسنا الآن مثالًا بسيطًا جدًا للتصادم ، وفي المقالة التالية سنحل المهمة الثالثة ونحلل ثغرة أمنية مثل تجاوز سعة المخزن المؤقت على المكدس. نراكم في المقالات التالية.

نحن في قناة برقية: قناة في برقية .

Source: https://habr.com/ru/post/ar459866/


All Articles