حل المشكلات مع pwnable.kr 25 - otp. الحد الأقصى لحجم ملف Linux

صورة

في هذه المقالة ، سنقوم بحل المهمة 25 من موقع pwnable.kr .

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

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

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

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

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

حل وظيفة Otp


نواصل القسم الثاني. سأقول على الفور أنه أكثر صعوبة من الأول ، لكن هذه المرة يزودوننا بالكود المصدري للبرنامج. لا تنسى المناقشة هنا (https://t.me/RalfHackerPublicChat) وهنا (https://t.me/RalfHackerChannel). لنبدأ.

انقر على الأيقونة مع توقيع otp. يتم منحنا العنوان والمنفذ للاتصال.

صورة

نحن نتواصل وننظر حولنا على الخادم.

صورة

علامة لا يمكننا قراءتها ، برنامج ورمز المصدر الخاص به. دعونا نرى المصدر.

صورة

دعنا نحللها. يأخذ البرنامج كلمة مرور كوسيطة.

صورة

بعد ذلك ، يتم تخزين 16 بايت عشوائي في متغير otp.

صورة

يتم إنشاء ملف باسم عشوائي (أول 8 بايت من otp) في مجلد tmp ويتم كتابة 8 بايت عشوائي (آخر 8 بايت من otp) إليه.

صورة

لسبب ما ، يقرأ الملف الذي تم إنشاؤه القيمة ويقارنها بكلمة المرور المدخلة.

صورة

هذا هو المكان الضعف. يتكون في التخزين الوسيط للرقم الذي تم إنشاؤه في ملف. يمكننا قصر حجم الملف ، على سبيل المثال ، على 0 ، ثم عند مقارنة الكتابة والقراءة بكلمة المرور 0. يمكن القيام بذلك على هذا النحو.

# ulimit -f 0 

صورة

الآن قم بتشغيل البرنامج.

صورة

حصلنا على خطأ. لا يهم ، لأنه يمكن معالجتها باستخدام نفس الثعبان.

 python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

صورة

نحصل على العلم والرئتين 100 نقطة. ونحن نواصل: في المقالة التالية سنتطرق إلى الويب. يمكنك الانضمام إلينا على Telegram .

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


All Articles