كيف تكتشف ثغرات SQL Injection يدويا وبدون برامج

محتويات المقال:
كيف تكتشف ثغرات sql injection
من الثغرات الخطيرة جدا في مواقع الويب ثغرات SQL Injection ،حيث تعتبر ثاني الثغرات شيوعا على الويب ، عند تواجدها في موقع ما سيكون من السهل جدا اختراقه والسيطرة على الموقع.
وهي ثغرة خاصة بحقن قواعد البيانات واستخراج البيانات منها ، او اختراقها بشكل كامل ، لهذا يجب أولا ان تعرف كيف تعمل الثغرة ، وماهي مواطن الضعف ، لتطوير موقع خالي من الثغرات، حيث لغة SQL مستخدمة في جميع أنواع قواعد البيانات بلا استثناء ، لذلك فالثغرة عامة.

الطريقة الأولى: عمل خطأ بواسطة حروف الهروب

لكي تفهم الثغرة جيدا يجب أولاً ان يكون لديك خلفية بلغة SQL ، حيث يمكن اكتشافها بطريقة عمل خطأ في الاستعلام بحيث عند حدوث الخطأ يطبع رسالة الخطأ ، ومن هذه الرسالة تستخرج العديد من المعلومات.
والتي منها نوع واسم قاعدة البيانات المستخدمة ، اسم الجدول والحقول ، أيضا يمكن الحصول على الاستعلام نفسه ، وهذا يعتمد على قوة الثغرة ، لنفرض ان لدينا الاستعلام التالي :


SELECT * FROM `news` WHERE id=25
بإضافة علامة التنصيص ' بعد 25 سيكون هناك خطأ يخبرنا عن نوعه ومكانة مع ذكر العديد من المعلومات ، لنفرض ان لدينا الرابط التالي في موقع الويب ،
http://www.example.com/snews.php?pid=25
عند إضافة علامة التنصيص ' بعد 25 ، بالشكل التالي :
http://www.example.com/snews.php?pid=25'
اذا ظهرت رسالة الخطأ فاعلم ان الموقع مصاب بالثغرة ، أيضا يمكن إضافة علامة التنصيص ' الى الفورم للتأكد من ظهور الخطأ ، بعد تحليل رسالة الخطأ ، واستخراج المعلومات ، يمكنك كتابة الاستغلال المناسب لها .

الطريقة الثانية :الحقن بالتغطية blindfolded

يستخدم المنطق (logic) لعمل الحقن ، حيث تعلم ان جملة WHERE ترجع قيمة منطقية اما true او false ، لهذا تم استخدام هذه المنطقة للتلاعب بالنتيجة ، باستخدام AND و OR ، واضافة شروط ترجع القيمة التي يريدها المهاجم ، فمثلا إضافة العبارة OR 1=1 ترجع دائما true لنفرض المثال التالي :
User: ali
Password:123
في قاعدة البيانات :

SELECT * FROM `user` WHERE uname = 'ali' AND pass = '123'
في حال ان كلمة السر غير صحيحيه من المستحيل ان يرجع قيمة true ، ولكن في حال اضفنا العبارة OR 1=1 بالشكل التالي :
User: ali
Password:123 OR 1=1
في قاعدة البيانات :
SELECT * FROM `user` WHERE uname = 'ali' AND pass = '123' OR 1=1
النتيجة حتما ستكون true لهذا تعتبر هذه طريقة فحص واستغلال للثغرة ، طبعا بإمكانك استخدم AND ، والتلاعب بالمدخلات على حسب متطلباتك ، هذه الفكرة فقط ، ولكن بإمكانك التوسع في هذا الموضوع اكثر، ايضا توجد العديد من الأدوات على كالي لينكس لفحص ثغرات مواقع الويب.


كان موضوعنا عن "كيف تكتشف ثغرات SQL Injection يدويا وبدون برامج" وهو مقدمة لموضوع رائع وهو كيفية حماية مواقع الويب المطورة بلغة php قريبا ان شاء الله ، دمتم في رعاية الله وحفظه!

الكلمات المفتاحية: