مقدمة

(تم إرسال هذه الكتابة إلى Google للتقييم وهي محمية بحقوق الطبع والنشر، لذا إذا كنت تريد إرسال الحل الخاص بك.. فقد انتهى الأمر بالأمس.. يجب عليك التسجيل في لوحة النتائج حتى يتم النظر في كتابتك)

من المفترض أن يكون MindReader واحدًا من أسهل التحديات في GoogleCTF وقد تم ذلك بعد بعض التخمين. دعنا نبدأ

أولاً، عند التوجه إلى صفحة التحدي، نرى مربعًا به زر "قراءة".

أول ما يتبادر إلى ذهنك هو محاولة اختبار "XSS" لذلك تم اختبار عدة محاولات XSS من بينها ما يلي:

<script>alert(test)</script>

ولسوء الحظ فإن الرد لم يكن كما كان متوقعا

تمت أيضًا تجربة تقنيات حقن الأوامر باستخدام اثنين من "ls" و"cmd" ولكن دون جدوى أيضًا.

الآن كانت الخطوة التالية هي تجربة اجتياز الدليل واتضح أن المضيف ضعيف. تمت تجربة عمليات الاجتياز التالية ولكن دون جدوى أيضًا

../.././../etc/passwd

../../../../etc/shadow

../../../../etc/resolv.conf

../../../etc/hosts

ثم بعد بضع بصمات أصابع، اتضح أن البيئة تقوم بتشغيل بعض أدوات الإرساء، لذا تم فتح الصفحة الرئيسية مرة أخرى وتم كتابة "main.py" وظهر البرنامج النصي الرئيسي

يستخدم البرنامج النصي أعلاه إطار عمل "flask" ويستخدم الوظيفة "index()" لتشغيل مهام قراءة القيم المدخلة في مربع التحدي.

يخبرنا السطر 6 أن هناك متغير بيئة تم التأكيد عليه قبل تشغيل الوظيفة وقدمت لنا Google تلميحًا بأن متغير البيئة هذا هو FLAG الفعلي.

وإعطاء المضيف عرضة لاجتياز الدليل، لذلك يجب الوصول إلى متغير البيئة بهذه الطريقة.

تجربة كل مجموعة باستخدام /proc/self/environ ولكن يبدو أنه ليس لدينا أذونات الوصول

يتم تفعيل المعرفة الجيدة بأنظمة Linux، حيث يحتوي /proc/self/fd على روابط رمزية لـ /dev/fd وهذا يعني أنه في Linux توجد علاقات بين متغيرات البيئة وواصفات الملفات للسماح لنا بالوصول إلى البيئة من واصفات الملفات أو من /dev/fd الذي يبدأ من 0,1,2 وهكذا.

لذا فإن محاولة /dev/fd/0 لا شيء سوى ربط /dev/fd/8 يعطينا ذلك

إلى جانب اجتياز الدليل

/dev/fd/../environ

وتم الاستيلاء على العلم

عن المؤلف

أقوم بإنشاء ملاحظات حول الأمن السيبراني وملاحظات التسويق الرقمي والدورات التدريبية عبر الإنترنت. أقدم أيضًا استشارات التسويق الرقمي بما في ذلك، على سبيل المثال لا الحصر، تحسين محركات البحث وإعلانات Google وMeta وإدارة CRM.

عرض المقالات