حل تحدي Encrypted Pastebin من Hacker101
مرحبا ... هذا التحدي من اصعب التحديات على موقع Hacker101, وفي الوقت الحالي تمكنت من حل جميع التحديات ولله الحمد.
العلم الاول FLAG0
بالنظر الى الصفحة الرئيسية بمكننا أن نرى انه يمكننا انشاء منشور في الموقع ويتم تشفيره العنوان+النص بتشفير من نوع 128 Bit AES.
بعد نشر المنشور الجديد لاحظت ان النص المشفر هو قيمة للباراميتر post في الرابط:
الخادم يقوم باستدعاء هذا النص ويقوم بفك تشفيره ويعرض النص الغير مشفر للمستخدم.
الآن، في حالة عدم وجود أي معرفة لديك على الإطلاق حول كيفية عمل التشفير وفك التشفير، أقترح عليك بشدة مشاهدة مقاطع الفيديو الخاصة بالتشفير على موقع Hacker101:
ستجد معلومات قيمة حول طريقة XOR في التشفير، وكتل البيانات، وخوارزميات التشفير وفك التشفير، وهجمات التشفير المعروفة وغير ذلك الكثير.
لذا، بالعودة إلى عملنا، من خلال مشاهدة مقاطع الفيديو، نعلم أن رسائل النص العادية تأتي بأطوال مختلفة، ومع ذلك، تتطلب تشفير الكتل بأن تكون جميع الرسائل عددًا محددًا من الكتل عندما تحتوي كل كتلة على 8/16 بايت.
بعد أن عرفت ذلك، فكرت في نفسي "ماذا سيحدث إذا قمت بتعديل القيمة المشفرة؟" أعتقد أنه سيكون هناك نوع من الخطأ فقمت بتغيير القيمة وذلك بزيادة حرف واحد على النص.
وكما هو متوقع . تغيير اي شي في النص ينتج عنه ظهور رسالة خطأ “ValueError: Input strings must be a multiple of 16 in length.” وإظهار العلم الاول.
العلم الثاني FLAG1
قضيت بعض الساعات لافهم ماذا يحدث بعد ذلك وماهي خطوتي التالية . نظرت الى التلميحات:
واحدة من اكثر الهجمات على التشفير هي هجوم الـ Oracle Padding Attack
قمت بمشاهدة بعض الفديوات وقمت بقراءة بعض المقالات المتعلقة بهذا الهجوم . وانا جاهز للبدء بعملية التنفيذ.
مع ان هذا النوع من الهجمات هو سهل التنفيذ لكنه يستغرق وقتاً طويلاً اذا لم تكن لديك طريقة لاتمتة الهجوم.
لحسن الحظ هناك طريقة لاتمتة الهجوم عن طريق اداة اسمها padre مكتوبة بلغة الـ go.
ارجح وبشدة فهم الية هجوم Padding Oracle Attack وكيف يعمل . يمكنك قراءة هذا المقال باللغة الانكليزية و الذي يوفر جميع المعلومات حول هذا النوع من الهجمات
https://blog.gdssecurity.com/labs/2010/9/14/automated-padding-oracle-attacks-with-padbuster.html
بعد قراءة المقال واستخدام اداة padre تمكنت من فك تشفير القيمة المشفرة والحصول على العلم الثاني
الـ PoC
- قم بتنزيل الاداة عن طريق الامر التالي:
go install github.com/glebarez/padre@latest
mv ~/go/bin/padre /usr/local/bin
- طريقة الاستخدام:
- padre -u URL Options EncryptedSample
'{ "id": "/''" }'
العلم الرابع Flag3
يمكننا الحصول على العلم الرابع عن طريق حقن sqli . ولكن المشكلة ان اكواد الحقن طويلة وسيكون طول النص المشفر اطول من 16. لحل ذلك وجدت سكربت على الـ GitHub يقوم بحل المشكلة . فقط قمت بالتعديل على السكربت وضعت رابط الموقع والنص المشفر وبايلود الحقن.
قمت بوضع المعلومات الصحيحة . واخترت بايلود اظهار قواعد البيانات الحالية
{"id":"7 UNION SELECT group_concat(database()), 1"}
- بايلود عرض الجداول
{"id": "7 UNION SELECT group_concat(table_name), 1 FROM information_schema.tables WHERE table_schema=database()"}
- بايلود عرض اعمدة جدول tracking
{"id":"7 UNION SELECT group_concat(column_name), 1 FROM information_schema.columns WHERE table_name='tracking'"}
- بايلود استخراج المعلومات من الجدول tracking
{"id":"7 UNION SELECT group_concat(headers), 1 FROM tracking"}
اتمنى انك استفدت من هذا المقال . اراك في حلول ومقالات اخرى. دمت بخير