عرض مشاركة واحدة
قديم 11-23-2011, 10:05 AM   رقم المشاركة : 1 (permalink)
معلومات العضو
ReD-HaT
~|M4$T3R|~
 
الصورة الرمزية ReD-HaT
 

 

 
إحصائية العضو









ReD-HaT غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
ReD-HaT is on a distinguished road

.... تجنب الحقن (جزء 1) sQL Injection


السلام عليكم ورحمة الله تعالى وبركاته

اليوم معنا درس في كيفيت تجنب الحقن السكويل في الموقع

  1. تعريف الحقن الاسكويل : ثغرات الاسكويل تعد من أخطر و أكثر الثغرات شيوعا في المواقع التي تدعم لغة php
  2. في هدا الدرس سنشرح مبدأ الحقن sql , وكيفية تجنبه

- ادن ثغرات السكويل هي ثغرات جد كبيرة و خطيرة على المواقع , و خصوصا ادى كان الموقع فضاء للأعضاء كالمنتدى مثلا , أو موقع فيه معلومات عن الأدمن و اليوزرس
و طبعا تكون قاعدة البيانات MYSQL

أنا هنا قلت MYSQL لأنه توجد عدة قواعد بيانات ك: oracle , sqlite , postgreSQL ,microsoft SQL server ...... سوف أتطرق لشرحها في دروس قادمة

المهم حتى نبدأ الدرس لازم تكون عندك دراية كافية بلغة php و تعرف كل شئ عنها


طرح المشكل

-يوجد نوعان من الحقن sql :

  • الحقن عن طريق المتغيرات التي تحتوي على سلاسل من أوامر الطباعة
  • الحقن عن طريق المتغيرات الرقمية


  1. المتغيرات التي تحتوي على سلاسل الطباعة
- نفترض انه لدينا سكربت php الدي سبيحث مثلا عن عمر عضو بوظيفة اليوزر
هدا اليوزر مر من صفحة لأخرى عن طريق الرابط l'URL عبر GET_$

مثال لسكريبت :
كود PHP:
 <?php ... $pseudo $_GET***91;'user'***93;; $requete mysql_query("SELECT age FROM membres WHERE user='$user'"); ...

- ادن اعلموا على ان هدا السكربت هو ثغرة كبيرة للحقن sql

- يكفي للهكر أن يضع في الرابط l'URL طلب مثل هدا :

كود:
' UNION SELECT password FROM membres WHERE id=1
- بهدا الطلب الهكر هنا يريد الحصول على الباسورد للعضو الدي يحمل الايدي واحد id=1
- لن أتعمق أكثر هنا أعطيتكم مجرد توضيح عن الكيفية

طريقة حماية السكربت

- لحماية هدا النوع من الحقن يكفي اضافة الوظيفة mysql_real_escape_string()

- اها طب كيف تعمل و ماهي وظيفتها ؟

-- هده الوظيفة تضيف طباعة "/" الى الطباعات التالية :

كود:
NULL, \x00, \n, \r, \, ', " et \x1a

- اوكي , في مادا تصلح ؟

-- مثلما لاحظتم في الحقن السابق الهاكر استعمل الاستعلامة ' لكي يخرج ما يحيط ب user$ ادى نحن منعناه من عمل هدا فلن يستطيع الحقن
ادن نستخلص اننا بستعمالنا mysql_real_escape_string() نكون قد فعالنا الحماية للطلب الدي يريده الهاكر

-تطبيق:
كود PHP:
<?php ... $user mysql_real_escape_string($_GET***91;'user'***93;); $requete mysql_query("SELECT age FROM membres WHERE user='$user'"); ...
بتدقيق :

الهاكر يعطي أمر هكدا
كود:
' UNION SELECT password FROM membres WHERE id=1
نحن باستعمالنا ل mysql_real_escape_string() يصبح طلب الهاكر هكدا

كود:
\' UNION SELECT password FROM membres WHERE id=1
مما يعني انه لا يستطيع استخراج user$ بما ان "/" قد أضيفت

ملحوظة : توجد وظيفة أخرى
كود:
addslashes()
تستعمل في PHP 4.3.9 مع magic_quotes_gpc يكون مفعلا

- انتهينا من الشرح في :
  • الحقن عن طريق المتغيرات التي تحتوي على سلاسل من أوامر الطباعة
-- في الدرس التاني سوف نرى الاستغلال و الحماية في المتغيرات الرقمية
  • الحقن عن طريق المتغيرات الرقمية

تم الشرح من طرف

ReD-HaT

الى اللقاء في الدرس القادم و في شروحات أخرى ان شاء الله

تحياتي للجميع





j[kf hgprk ([.x 1) sQL Injection

التوقيع

Vbspiders For Ever

mess with the best
die like rest

-----------------------------------
kevin-ffts@hotmail.fr
wep@hotmail.fr

 


التعديل الأخير تم بواسطة ReD-HaT ; 11-23-2011 الساعة 10:16 AM.