Page 234 - بسم الله الرحمن الرحيم
P. 234
غير ذلك سيتم إرجهاع FALSEوسيتم رفض الدختول
ملحظه :يجب أن يكون لديك ولو القليل من المعرفه بأوامر الـ . SQL
> <field from web formيحل محلها ما أدختله المستخد.م في صفحة التحقق من صلحيته
في تصجربتنا عندما قمنا بإدختال ' كإسم مستخد.م وبالمثل لكلمة المرور فأن أمر الـ SQLأصبح بالشكل
التالي :
:code
'=SELECT * from Users WHERE User_Name=' ' ' AND Password
''
ونلحظ أننا قمنا بإغلق علمة التنصيص الولى وبقي علمة تصنصيص لم تصغلق بعد
وهو ما أدى لظهور رسالة الخطأ !!
الن نقو.م بتجربة سٍا.م مستخد.م blah' OR '1'='1 :
ومثلها لكلمة المرور.
فيصبح شكل أمر الـ SQL
:code
SELECT * from Users WHERE User_Name='blah' OR '1'='1' AND
'Password='blah' OR '1'='1
لنحلل المر كل جهزء على حدا
SELECT * from Users
تصعني أختتر جهميع السطور من الجدول Users
'WHERE User_Name='blah' OR '1'='1' AND Password='blah' OR '1'='1
في هذا الجزء نقو.م بتحديد السطر الذي سنقو.م بإختتياره وهو الذي تصتحقق فيه الشروط
''blah' OR '1'='1
هنا بوجهود ORلم تصصبح قيمة نصيه ولكن أصبحت شرط
يصبح الشرط صحيح إذا كان طرف واحد على القل من الطراف المشتركه في الشرط صحيح
وفي حالتنا فإن الطرف الول هو ''blah
وهو بدون الخوض في تصفاصيل لسنا في صددها الن يعبر عن قيمة صحيحه TRUE
والطرف الختر هو ''1'='1
يمكنك الجهابة عن إذا كانت 1مساويه لـ 1أ.م ل !!!!
إذا سيكون شكل الشرط بعد تصحليله هو TRUE OR TRUE
وبالتالي فإن النتيجه النهائيه للشرط هي TRUE
ونفس التفاصيل تصحدث لكلمة المرور
ملحظه مهمه جهدنُا :القيمه TRUEالتي نحصلها من الشرط ليست مساويه للكلمه TRUEالتي نكتبها على
لوحة المفاتصيح الخاصه بنا
لذلك ل تصحاول إستخدا.م أسم مستخد.م TRUEوكلمة مرور TRUEلتصما.م الـ SQL injection
الشرط السابق سيقو.م بأختتيار أول سطر من الجدول Usersويرجهع محتوياتصه في مصفوفه
وبالتالي في بعض الحالت ستجد أنك قد أستطعت الدختول للصفحة المحميه
ولكن في حالت أخترى ل
لنكمل التفاصيل .....
يجب التنبه لنه ربما يكون الشرط في أمر الـ SQLوهو ما يأتصي بعد WHEREيتحقق من عدة أشياء
لذلك نستخد.م (two dashes) --ليتم إهمال بقية السطر ,حيث يمكننا الستعاضه عن ما أدختلناه قبل قليل
بالمدختلت التاليه
أسم مستخد.م --'blah' OR '1'='1 :
234