هل تبلورت الفكرة لديكم عن كيفية اكتشاف ثغرات حقن قواعد البيانات؟ اتمنى ذلك،فعندما سنصل إلى الجانب التطبيقي،ﻻ احب أن تسألوني عن البديهيات،فأعدوا العدة من الآن،و اطرحوا الأسئلة الآن و ليس عندما ندخل إلى الحرب…ليست حربا بمعنى الكلمة و لكن أمر اكتشاف الثغرات ليس سهلا كما يعتقد ذلك الكثيرون،فمن الممكن أن تعمل لساعات طويلة دون جدوى و يمكن أن تصل إلى مبتغاك بالصدفة،و هذا ما يجعل المهتمين بأمن المعلومات مهووسين بأمر اكتشاف الثغرات.
في الدرس السابق تعرفنا على طرق اكتشاف ثغرات الحقن و لكن لم نفصل فيها،لهذا فاليوم سنقوم بشرح كل النقاط التي رأيناها بالتفصيل الممل.هل تتذكرون هذا السطر:
http://xxxxxxx.org/index.php?id=17+order+by+99999
ما معنى الأوامر التي أضفناها إلى رابط الموقع؟
لو افترضنا بأن الموقع مصاب بثغرة حقن قواعد البيانات،فالأمر order by هو أحد أوامر لغة SQL و سيقوم بترتيب النتائج التي طلبناها فقط بالإستناد إلى الخانة الأولى أي خانة الـ id،فأي جدول في قاعدة البيانات سيحوي خانة واحدة على الأقل و لكن عندما نطلب الترتيب حسب الخانة 99999 فاحتمال وجود هته الخانة(التسجيل) هو احتمال ضعيف،و بالتالي سنحصل نحن على خطأ من قاعدة البيانات.
للنتقل ﻷمر أخر و هو إضافة or+x=x+ بدل order+by+99999+…هذا يسمى أيضا تلاعبا بالأوامر المرسلة لقاعدة البيانات و لكن علينا أن نغير الرابط ليصبح كالتالي:
http://xxxxxxx.org/index.php?id=-1+or+1=1
لماذا وضعنا id=-1؟ نعلم تماما أنه من غير الممكن بتاتا بأن يكون الجدول في قاعدة البيانات ﻻ يحوي تسجيل فكيف إذن سيحوي -1 و بالتالي سنرغم قاعدة البيانات على أن تقوم بتنفيذ الأمر الذي أرسلناه إليها و هو or+1=1+ و بالتالي ستجلب لنا التسجيل اﻷول في قاعدة البيانات،ولو رأينا إلى أمر SQL المرسل إلى قاعدة البيانات لوجدناه كالتالي:
SELECT * FROM articles WHERE id=’-1′ or 1=1
يمكنك أستخدام أي أمر شرطي حتى نقوم بتخطي الشرط الأول و تطبيق الشرط الذي نريد نحن تنفيذه على قاعدة البيانات.
لن أطيل الحديث،فعندما تتعقد الأمور الأفضل أن تكون الدروس قصيرة حتى يسهل الفهم،الدروس القادمة ستكون أكثر أثارة بحول الله…ﻻ تنسوا مشاركة الدرس مع الأصدقاء…دمتم بود،سلام
2 تعليقان. Leave new
السلام عليكم أخي عبد المجيد
بداية أنصح لمن جاء متأخر بأن يرجع الى الدروس الفارطة حتى يستطيع مواكبة الدورة الجد مشوقة
في هذه المرحلة أخي أرى أنه من الظروري على أي شخص أن يعود ليدرس قليلا على SQL لكي يفهم جيدا ,
ممكن بعض الامور او بعض العناوين التي يجب أن أراجعها حتى أستطيع الفهم الجيد أخي
تحياتي و تقديري أخي
من الضروري جدا أن يكون الدارس لهته المواضيع ملما بشكل جيد للدروس السابقة