Bandit Level 21 to 23 (Arabic)
بسم الله
--------------------------------------------------------------------
في المرحلة 21←22 يقول إنه في برنامج مجدول يعمل تلقائيا في فترات محددة وموجود في المسار /etc/cron.d ، نروح المسار ونشوف وش الملفات اللي عندنا:
*ملاحظة: أنا شرحت الـ cron باختصار على مقطعي
باليوتيوب لما حليت هذه المرحلة من الدقيقة 0:31 إلى 2:55.
cd /etc/cron.d
ls
طلع معاي عدة ملفات، احنا في
المرحلة 21 ونبي نروح 22، إذن بنستعرض الملف اللي يخص 22 وهو cronjob_bandit22
cat /etc/cron.d/cronjob_bandit22
هذا الكرون عبارة عن shell script يملكه bandit22 ويعمل عند كل إعادة تشغيل للجهاز وفي كل
دقيقة. نستعرض هذا الـscript
cat /usr/bin/cronjob_bandit22.sh
في البداية عندي الـshebang وهو مثل المعرف للغة المستخدمة في هذا الـscript، في هذه الحالة هي bash، بعد كذا يقوم هذا السكريب بتغيير الصلاحيات للملف اللي اسمه
t706lds9S0RqQh9aMc z6ShpAoZKF7fgv
ويخليه مقروء ومكتوب للمالك اللي
هو bandit22 ومقروء فقط لبقية
المستخدمين.
تمام كذا عرفنا إننا نقدر نقرأ
هذا الملف بس وش بداخل هذا الملف؟ نشوف السطر اللي تحته اللي باختصار ينسخ كلمة
السر لـbandit22 ويحطها في هذا الملف.
إذن الحل بكل سهولة إننا نروح لهذا الملف ونقرأه وبكذا بنحصل على كلمة السر.
ناخذ كلمة السر وننتقل للمرحلة اللي بعدها
ssh bandit22@bandit.labs.overthewire.org -p 2220
--------------------------------------------------------------------
في المرحلة 22←23 نفس الطريقة
للمرحلة السابقة، نقرأ الكرون ونشوف وش يسوي ونحاول نحصل من خلاله على كلمة السر.
cd /etc/cron.d
ls
نفس الشيء بنركز على الـcronjob المتعلق بـ23 لأن احنا نبي ننتقل لها. نعرض
السكريبت باستخدام cat
هذا السكريبت ايش يسوي؟ بالبداية يعرف متغير اسمه myname ويخزن فيه قيمة الكوماند whoami، هذه الكوماند تطبع اسم المستخدم الحالي،
يعني لو شغلناها بيطبع لنا bandit22. طيب الحين الكرون هذا مِلك مين؟ ملك bandit23، إذن الناتج بيكون bandit23. بعد كذا يعرف متغير آخر اسمه mytarget ويخزن قيمة تنفيذ هذه الـcommand
echo I am user $myname | md5sum | cut -d ' ' -f 1
طيب مو احنا عرفنا إن قيمة $myname بتكون bandit23، إذن اللي بيتنفذ بالضبط هو
echo I am user bandit23
| md5sum | cut -d ' ' -f 1
فبناخذ هذه الـCommand وننفذها وبيطلع معانا هذه القيمة:
8ca319486bfbbc3663ea0fbe81326349
بعد كذا يطبع نص يقولي إنه ينسخ كلمة السر لـbandit23 ويحطها بملف على tmp وآخر سطر بالسكريبت هو الكوماند اللي بتسوي
هالشغلة وهي
cat /etc/bandit_pass/$myname > /tmp/$mytarget
باستبدال المتغيرات myname و mytarget بقيمهم اللي أوجدناها، تصبح الكوماند كذا:
cat /etc/bandit_pass/bandti23 > /tmp/ 8ca319486bfbbc3663ea0fbe81326349
إذن باختصار هو يطبع كلمة السر للمرحلة
الجاية بالملف اللي على /tmp فنروح للملف ونعرضه وناخذ كلمة السر.
ناخذ كلمة السر وننتقل للمرحلة
اللي بعدها
ssh bandit23@bandit.labs.overthewire.org -p 2220
------------------------------------------------------------------------------
في المرحلة 23←24 نفس الطريقة للمرحلة السابقة، نقرأ الكرون
ونشوف وش يسوي ونحاول نحصل من خلاله على كلمة السر.
cd /etc/cron.d
ls
نفس الشيء بنركز على الـcronjob المتعلق بـ24 لأن احنا نبي ننتقل لها.
نعرض السكريبت باستخدام cat
بالبداية يعرف متغير اسمه myname ويخزن فيه قيمة whoami، وبما إن المالك للملف هو bandit24 إذن القيمة اللي بتتخزن في المتغير هي bandit24. بعد كذا يروح لـ
/var/spool/bandit24/foo
ويطبع لي نص يقول
"تنفيذ وحذف كل الـscripts الموجودة في /var/spool/bandit24/foo"
وهذا بالضبط اللي بتسويه الـfor
loop اللي تحت.
بالبداية فيه استثناء، اللي هو إذا كان اسم
الملف "." أو ".." إذن تجاهله، طيب ليش؟ لأن "."
تدل على المجلد الحالي و ".." تدل على المجلد السابق، فما ينفع تنحذف.
بعد كذا بياخذ الملفات واحد واحد وبينفذ
عليها هذه العملية
stat --format "%U" ./$i
والناتج
منها بيخزنه في متغير اسمه owner، إذا كانت قيمة هذا المتغير bandit23 إذن راح ينفذه ثم يحذفه، إذا لا ما كان قيمته
bandit23 إذن يحذف
الملف بدون تنفيذ (يعني تشغيل).
طيب وش تسوي
بالضبط هذه stat --format "%U" ./$i
هذي
الكوماند تستخرج لي المستخدم المالك للملف فقط من النتيجة اللي تطلعها stat
فلو نجرب
نشغل stat لحالها على
ملف يملكه kali بتطلع لي
معلومات كثير، مثل كذا:
ولو شغلناها
باستخدام الاختيارات المضافة عليها مثل ما هو موجود بالسكريبت رح يطلع معانا اسم
المستخدم فقط، مثل كذا:
يعني الزبدة وشهي، الحين عندي سكريبت ينفذ
السكريبتات اللي يسويها bandit23 (اللي هو احنا) المُخزنة في المجلد /var/spool/bandit24/foo ،وبعد ما ينفذها يحذفها.
إذن المطلوب مننا الحين إننا نسوي سكريبت
ينفذه لنا bandit24، ونخزنه في
المسار /var/spool/bandit24/foo. وبما إن bandit24 عنده أكيد صلاحية إنه يقرأ الملف اللي يحتوي
على كلمة السر حقته، فاحنا نبغاه يقرأ كلمة السر حقته ويرسلها لنا في ملف. كيف
نسوي كذا؟
أول شيء نكتب الـscript
#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/asmaa1/bandit24_pass
هذا السكريبت بياخذ كلمة السر لـbandit24 ويخزنها في ملف اسمه bandit24_pass ثم يحفظ هذا الملف في /tmp/asmaa1
cd /tmp
mkdir asmaa1
chmod 777 asmaa1
نروح على /tmp وننشئ مجلد ونعطيه صلاحيات مفتوحة، عشان يقدر bandit24 لما ينفذ السكريبت يكتب جوا هذا المجلد
ويرسل لنا كلمة السر
cd asmaa1
vim getpass.sh
نلصق السكريبت في هذا الملف، ثم نخرج من vim بعد ما نحفظ التغييرات
chmod +x getpass.sh عشان نخلي
هذا الملف يمكن تنفيذه
وآخر خطوه ننسخ هذا الملف للمسار اللي bandit24 ينفذ الملفات اللي فيه بهالطريقة:
cp getpass.sh /var/spool/bandit24/foo
الحين كل شيء جاهز، نستنى بس بداية دقيقة
جديدة، ونعرض الملفات اللي موجودة بـ/tmp/asmaa1 وبنلاقي ملف جديد اسمه bandit24_pass، يحتوي على كلمة السر للمرحلة الجاية،
ناخذها وننتقل للمرحلة اللي بعدها.
ssh bandit24@bandit.labs.overthewire.org -p 2220
تكملة الحل على هذا الرابط








Comments
Post a Comment