كيفية مراجعة نموذج تسجيل الدخول لحقن SQL الضعيف في PHP
ملخص
لقد قمنا بمراجعة نموذج تسجيل الدخول المكتوب بلغة php وهو عرضة لحقن SQL. قمنا بمقارنة إصدارات مختلفة من التعليمات البرمجية وقمنا ببناء حمولة SQL حقن لكل حالة.
فحص الكود الأول
الكود هو كود php لنموذج تسجيل الدخول. كما نرى، يتم تخزين اسم المستخدم وكلمة المرور لتسجيل الدخول في متغيرين. يتم أخذ قيمة كل متغير كمدخل من المستخدم عبر طلب HTTP POST.
المشكلة هنا هي أن كل ما يدخله المستخدم في نموذج تسجيل الدخول، يتم استخدامه مباشرة في استعلام SQL في السطر التالي ثم يتم تنفيذه في الواجهة الخلفية مما يسمح بحدوث إدخال ضار.
استغلال
توضح لقطة الشاشة التالية كيف قمنا بإدخال حمولة SQL في نموذج تسجيل الدخول
يمكننا تجربة أشكال مختلفة من الحمولة مثل
الجذر" أو 1=1##
' أو 1=1 — #
"أو 1-
طالما أن متغيرات حقول تسجيل الدخول لا يتم استخدامها مع علامات الاقتباس المفردة. سنرى أمثلة على التعليمات البرمجية حيث تم ذكر المتغيرات. في تلك الحالات، قد تختلف حمولة حقن SQL.
توضح لقطة الشاشة أدناه الاستغلال الناجح لنموذج تسجيل الدخول.
فحص الكود الثاني
في لقطة الشاشة التالية، قمنا بمراجعة نموذج تسجيل دخول PHP آخر ضعيف لحقن SQL. والفرق هو أن متغيرات تسجيل الدخول تستخدم مع علامات الاقتباس المفردة في متغير الاستعلام
وبالتالي فإن حمولة SQL الخاصة بنا ستختلف. يجب أن تبدأ حمولتنا في هذه الحالة وتنتهي بعلامة اقتباس لإغلاق تلك المستخدمة في متغير الاستعلام.
المثال سيكون:
‘ أو "="
"الجذر أو "="
فحص الكود الثالث
قمنا بتعديل نفس الكود لاستخدام الأقواس مع علامات الاقتباس المفردة في استعلام SQL.
في هذه الحالة، يجب أيضًا أن تبدأ حمولة SQL الخاصة بنا بعلامة اقتباس مفردة وقوسين
') أو صحيح-
امتحان الكود الرابع
ماذا لو احتوى الكود على متغيرين لتسجيل الدخول مع أقواس وعلامات اقتباس مزدوجة.
تحتاج حمولات SQL الخاصة بنا في هذه الحالة إلى إغلاق الأقواس وعلامات الاقتباس المزدوجة
"أو صحيح-
") أو صحيح-
')) أو صحيح-
جولة فيديو كاملة