اذهب إلى المحتوى
  • 0

حقن جمل update و insert في SQL

Ola Mahmoud2

السؤال

Recommended Posts

  • 1

يمكن إستخدام جملة INSERT أو UPDATE في عملية حقن جمل SQL وذلك عند محاولة إكتشاف أو إستغلال ثغرات SQL Injection حيث يمكن للمخترق Hacker أن يقوم بإضافة بريد إلكتروني جديد كمسئول Admin أو حتى يقوم بتغير كلمة مرور أحد المستخدمين أو أحد المسئولين، فعلى سبيل المثال، إن كان لدينا حقل لعملية بحث، على النحو التالي:

<form action="search.php" method="GET">
  <input type="text" name="query" placeholder="Search ..." />
</form>

وتتم عملية المعالجة من خلال صفحة search.php على النحو التالي:

<?php

// إستخدام ما أدخله المستخدم في جملة SQL بشكل مباشر في 
$result = mysql_query("SELECT * FROM posts WHERE title LIKE '%" . $_GET['query'] . "%'");

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

post title%'; DELETE FROM users; --

إن قام أحد ما بكتابة النص السابق في حقل البحث، فستكون جملة SQL التي يتم تنفيذها في النهاية كالتالي:

SELECT * FROM posts WHERE title LIKE '%post title%'; DELETE FROM users; --%'

بهذا الشكل سوف يتم أولًا البحث عن منشور بعنوان مشابهة ثم سيتم حذف كل المستخدمين من جدول users وهذا ما لا نريده بالطبع، وبالمثل يمكن إستخدام جمل INSERT أو UPDATE لإضافة أو تغير مسئولين في الموقع، وذلك من خلال كتابة تعليمة مشابهة للتالي:

post title%'; INSERT INTO users(email, name, password, is_admin) VALUES('hacker@mail.com', 'Hacker', '123456', 1); --

الجملة السابقة سوف تؤدي إلى إضافة مستخدم جديد في جدول users وجعل صلاحياته admin، أيضًا يمكن إستخدام جملة UPDATE لتغير كلمة سر أي مستخدم على سبيل المثال:

post title%'; UPDATE users SET password = '123456' WHERE email = 'admin@mail.com'; --

الجملة السابقة سوف تقوم بتغير كلمة المرور للمسئول (أو المستخدم) الذي لديه بريد إلكتروني admin@mail.com.

بهذه الطريقة يمكن أن يتم إستخدام جمل UPDATE  أو INSERT لحقن تعليمات SQL في قاعدة البيانات. بالطبع لن يكون المخترق أو مُختبِر الإختراق على علم بأسماء الجداول أو الأعمدة في الغالب لكن من خلال بعض جمل SQL الأخرى التي سيقوم بحقنها سيمكنه معرفة كل الجداول في قاعدة البيانات وكذلك أسماء وأنواع الأعمدة في كل جدول، ويعتمد الأمر في النهاية التجربة ومحاولة إستغلال ثغرة SQL Injection بأي طريقة ممكنة.

يمكنكِ الإطلاع على هذه المقالة التي توضح بتفصيل أكثر ما هي ثغرات SQL Injection وكيفية الحماية منها:

أيضًا لمعلومات أكثر حول حماية المواقع يمكنكِ الإطلاع على هذه المقالة هنا:

يجدر بالذكر أن هناك الكثير من المواقع التي تقدم مكافأت لكل من يكتشف ثغرات مشابهة في خدماتها وتسمى المكافأة في هذه الحالة bug bounty ويوجد الكثير من المواقع التي تقدم برامج لإكتشاف الثغرات مثل hackerone و bugcrowd و Facebook أيضًا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إن سؤالك أيضا بحاجة لتوضيح، أقصد أنه سؤال عام، لذلك أقترح عليك مايلي:

  • insert تعمل على إضافة بيانات للجدول (بيانات جديدة غير موجودة من قبل) تضيف سطر أو أكثر
  • update تعمل على تعديل حقل أو أكثر من سطر أو أكثر من جدول (غالباً حسب شرط معين)

يمكنك الاستفادة من توثيق SQL لموسوعة حسوب:

أرجو دراسة هذين المقالين ثم التجريب

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...