اعتقد أنكم قد تعرفتم و بشكل جيد جدا عن قواعد البيانات و عن لغة SQL،و أصبحتم مؤهلين للتعرف على ثغرات حقن قواعد البيانات،و لكن علينا أن نعرف ما الذي يقصد بحقن قواعد البيانات أوﻻ؟
لنأخذ مثاﻻ بسيطا عن رابط في موقع ينشر مقاﻻت مختلفة…

http://xxxxxxx.org/index.php?id=17

هل تلاحظون الرقم 17…لنفرض مثلا أنه عندما تكتب هذا الرابط في متصفحك سيعطيك مقاﻻ عن أمن المعلومات،و لكن هذا ما تراه أنت،لنلقي نظرة عن الكود الذي يعطينا هذا المقال

SELECT * FROM articles WHERE id=’17’

لنقم الآن بتشريح بسيط SELECT هي أمر في SQL يأمر قاعدة البيانات بجلب معطيات مخزنة فيها في حين النجمة فهي مرتبطة بالأمر السابق و تعني:كل البيانات،FROM معناها (من) article هو الجدول الذي يحوي البيانات في القاعدة WHERE هي أيضا أحد أوامر لغة SQL و معناها عندما يكون،id هو أحد الأعمدة في الجدول article و بالتالي معنى الجملة السابقة هو:”قم بجلب كل المعطيات من الجدول article عندما يكون الـ id يساوي 17″الآن لو قمنا ببعض التلاعبات بالرابط السابق كأن نضيف علامة تنصيص في آخره فيكون الرابط كالتالي:

http://xxxxxxx.org/index.php?id=17′

هذا ما تراه أنت و لكنه في الجانب الآخر يظهر بهذا الشكل

SELECT * FROM articles WHERE id=’17”

لو قمنا بطلب الصفحة سيظهر لنا خطأ من الشكل التالي:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”’ at line 1 Error no:xxxx

لماذا ظهر هذا الخطأ يا ترى،من المفروض أن الأمر الصحيح هو الأمر الأول و لكن عندما أضفنا علامة التنصيص لم يفهم محرك قاعدة البيانات الأمر،ﻷنه يعرف بأنه بعد الأمر WHERE و الذي يعبر مثل الشروط في اللغات الأخرى،بأن الشرط يجب أن يكون بين علامتي تنصيص إما ‘ أو ” و لكن العلامة الثالثة التي اضفنها أربكت المحرك و بالتالي أظهر لنا الخطأ.
من الممكن جدا أننا ﻻ نحصل على خطأ بإضافة علامة تنصيص،و بالتالي علينا أن ننتقل الى استخدام طرق اخرى،يمكن استخدام احدى العلامات التالية:

/*
‘/*
“/*
‘–
“–
‘;
“;
;

إن لم يؤدي إضافة إحدى هته العلامات إلى ظهور خطأ فلننتقل إلى استخدام طريقة اخرى:

+order+by+99999
+or+1=2
+and+1=2

فيما يخص علامة الإضافة (+) هي فقط ﻻستبدال المسافة،فلو تم إضافة أحد الأسطر السابقة باستبدال علامة + بمسافة سيتم تحويلها بشكل آلي إلى 20% و بالتالي ستصعب عملية القراءة.هل فهتم الأسطر السابقة أم ﻻ؟ﻻ بأس إذن،لو أضفنا السطر الأول إلى الرابط السابق سيصبح الرابط كالتالي:

 http://xxxxxxx.org/index.php?id=17+order+by+99999

هل فهمتم الآن لماذا تمت تسمية هذا النوع من الثغرات بثغرات حقن قواعد البيانات؟ببساطة ﻷننا قمت بعملية حقن ﻷكواد لغة SQL بشكل غير مرخص لقاعدة البيانات من اجل جلب معلومات ﻻ يحق لنا اﻹطلاع عليها،انتهى الجزء الأول من عملية اكتشاف ثغرات حقن قواعد البيانات،ﻻ تنسوا مشاركة المقال فقد تعبت في كتابته،دمتم بود،سلام.

3 تعليقات. Leave new

  • السلام عليكم أخي
    شكرا على المعلومات فقد أفدتنا جيد فيما يخص الية الحقن و فهم الاكواد
    في بعض المرات لا يظهر بأنه هناك خطأ في الصفحة و لكن نلاحض بأنه هناك اختفاء لنص أو لصورة أوغيرها من الامور التي تغير الحالة الطبيعية للصفحة
    تحياتي و احتراماتي لمجهوداتك أخي

    رد

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Fill out this field
Fill out this field
الرجاء إدخال عنوان بريد إلكتروني صالح.
You need to agree with the terms to proceed

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.