حل المشكلات باستخدام pwnable.kr 01 - fd. واصفات الملف والعمليات

صورة

في هذه المقالة سوف نحلل: ما هو واصف الملف ، وكيف تصل العمليات إلى بعض تدفقات الإدخال / الإخراج ، وتحل المهمة الأولى من الموقع pwnable.kr .

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

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

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

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

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

واصفات الملف


واصف الملف هو رقم غير سالب يحدد دفق الإدخال / الإخراج الذي قد يرتبط بالملفات أو الدلائل أو المقابس.

صورة

يحتوي جدول ملفات النظام (SFT - جدول ملفات النظام) وجدول inode (جدول Inode) على المعلومات اللازمة لعملية الوصول إلى بيانات الملف. إذا طلبت عدة عمليات الوصول إلى نفس الملف ، فستتلقى كل من هذه العمليات العنصر الخاص بها في جدول ملفات النظام ، على الرغم من حقيقة أنها ستعمل مع نفس الملف.

يوفر kernel واصف الملف للعملية عندما يتمكن من الوصول إلى الملف. يمكننا أن نقول أن واصف الملف هو فهرس لمجموعة من الملفات المفتوحة الفريدة لكل عملية. لكن المؤشرات الثلاثة الأولى ثابتة بحزم:

  • 0 - الإدخال القياسي (stdin) ؛
  • 1 - الإخراج القياسي (stdout) ؛
  • 2 - دفق الخطأ القياسي (stderr).

لذا فإن الدالتين get () و printf () من مكتبة C القياسية تستخدمان stdin و stdout ، مما يسمح للأصداف بإعادة توجيه المدخلات والمخرجات بشكل صحيح من العمليات.

حل الوظيفة Fd


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

صورة

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

صورة

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

ls -l 

صورة

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

صورة

يتبع هذا الرمز أن البرنامج يأخذ رقمًا كمعلمة ، ويطرح 0x1234 منه ويستخدمه كواصف للحصول على سلسلة يجب أن تكون مساوية لـ "LETMEWIN".

صورة

وبالتالي ، نحتاج إلى إرسال البرنامج سلسلة "LETMEWIN" من خلال دفق الإدخال القياسي (stdin). لهذا ، يجب أن يكون الواصف الذي تم تمريره إلى دالة read () 0. أي ، يجب استخدام الرقم 0x1234 كمعلمة البرنامج. تحويله إلى عشري.

صورة

الآن قم بتشغيل البرنامج باستخدام المعلمة 4660 ، وقم بإسقاط الخط المطلوب والتقاط العلم.

صورة

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

صورة

يبدأ Pwnable.kr بمثل هذه المهمة السهلة ، ويرجع الفضل في ذلك إلى ضرورة التعامل مع الواصفات. نراكم في المقالات التالية!

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

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


All Articles