1. المٌقدمة الأولي :دورة إختبار ثغرات حقن قواعد البيانات SQLI الإحترافية لعام 2017 عام 2018
    تٌعد ثغرات حقن قواعد البينات الثغرة رقم واحد فى العالم والمصنفة تحت بند الإخطر
    والفريق التابع له بإختراق أكبر المواقع الصهيونية قرائة الموضوع
  2. المٌقدمة الثانية : دورة إختبار ثغرات حقن قواعد البيانات SQLI الإحترافية لعام 2017 عام 2018
    في هذه المٌثقدمة الثانية والأخيرة سوف نتعرف على قواعد علم حقن قواعد البيانات
    حتى يتثنى لنا علم يٌساعدنا على القيام بعمليات الحقن بالطرق الصحيحه قرائة الموضوع
  3. دورة كشف دمج والتلغيم حصريا على أرض عراق تيم(2017)
    بعد ماقمت بعمل دورة الكشف دمج والتلغيم وستكملت الدوره وتحتوي على 12 درس
    كانت دروس حصريا على عراق تيم وشرح واضح جدا ومفهوم الى المبتدأ والى المبدع قرائة الموضوع

[ شرح ] مقدّمة لـ ثغرات Sql Injection

الموضوع في '[ SQL-injection ]' بواسطة ThE JoCkEy, بتاريخ ‏27 مايو 2012.

كاتب الموضوع : ThE JoCkEy المشاهدات : 10,250 الردود : 36 ‏27 مايو 2012
حالة الموضوع:
مغلق
  1. غير متصل

    ThE JoCkEy
    rankrank
    Developer

    عضو منذ:
    ‏27 مايو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    الوظيفة:
    hacker dz
    الإقامة:

    [​IMG]


    بسم الله الرحمن الرحيم

    مقدّمه :

    أي موقع على الإنترنت ، يتكوّن من جزئين ، الأوّل وهو البرنامج المشغّل ( Web application )

    والثاني هو قاعدة البيانات ( Database ) .

    فانت مثلاً ، لما تفتح الصفحة التالية :

    عزيزي الزائر يتوجب عليك التسجيل لمشاهدة الروابط [ تسجيل الدخول ]


    فـ برنامج register.php ، ما يتغيّر محتواه في كل مرّه يدخل زائر يسجّل .. لأنّه ما يخزّن شي

    داخله

    برنامج register.php ، مهمّته ياخذ البيانات ، ويرسلها لـ قاعدة البيانات واللي بدورها راح تخزّن

    البيانات فيها .

    في الحقيقة ، برنامج register.php ، ماعنده صلاحيّة انه يدخل على القاعدة نفسها ويخزّن

    حاجة فيها ، بل هو يرسل أمر لبرنامج مسؤول عن إدارة قواعد البيانات للقاعدة ، والبرنامج

    هو اللي ينفّذ الأمر ويخزّن البيانات في القاعدة .

    فـ برنامج register.php مكتوب بلغة php

    أما قاعدة البيانات ، فتتعامل بلغة أخرى تسمّى Sql .

    فمثلاً ، لنفرض إن القاعدة فيها جدول اسمه users

    وأنا سوّيت برنامج show.php ، ابغاه يعرض كل البيانات اللي في جدول users

    فـ راح أخلّي برنامج show.php يتّصل بالقاعدة ، ويرسل أمر sql

    للقاعدة ، ثم القاعدة تنفّذه وترسل نتائج التنفيذ show.php

    واللي بدوره ، راح ياخذ كل النتايج ويطبعها لي في المتصفّح على هيئة كود html .

    مثال :

    كود PHP:
    <?php
    // iq-t34m.host.org

    // الإتصال بقاعدة البيانات
    $sqldata mysql_connect("localhost","username","password");
    // تخزين أمر Sql في متغيّر query
    $query "SELECT * FROM users";
    // إرسال الأمر لقاعدة البيانات وتخزين النتيجة في المتغيّر result
    $result mysql_query($query);
    // حساب عدد نتائج تنفيذ أمر Sql
    $rowcount mysql_num_rows($result);
    // طباعة نتائج تنفيذ أمر sql للمستخدم
    $row 1;
    while (
    $db_field mysql_fetch_assoc($result)) {
    if (
    $row <= $rowcount){
    print 
    $db_field[$row] . "<BR>";
    $row++;
    // إغلاق الإتصال بالقاعدة
    mysql_close()
    ?>
    هذا الكود يتّصل بسيرفر قواعد البيانات مثلاً ( Mysql ) ، ويرسل له الأمر

    كود PHP:
    SELECT FROM users
    كود PHP:
    <?phpوهذا أمر Sql ، يقوم بسحب كامل محتويات جدول users

    برنامج Mysql راح يستقبل الأمر ثم ينفّذه ، ويرسل نتائج التنفيذ لبرنامج php

    ثم برنامج php ياخذ النتائج ويطبعها للمستخدم على صفحة الانترنت 
    .

    طيب ايش نعني بحقن Sql ؟

    لنفرض انّه فيه برنامج لتسجيل الدخول للوحة تحكم موقع

    اسم البرنامج login
    .php وهذا كود البرنامج :


    // iq-t34m.host.org

    // الإتصال بقاعدة البيانات
    $sqldata mysql_connect("localhost","username","password");
    // تخزين أمر Sql في متغيّر query
    $query "SELECT userid FROM users WHERE user = '$_GET["user"]' "."AND password = '$_GET["password"]'";
    // إرسال الأمر لقاعدة البيانات وتخزين نتيجة التنفيذ في المتغيّر result
    $result mysql_query($query);
    // حساب عدد نتائج تنفيذ أمر Sql
    $rowcount mysql_num_rows($result);
    // اذا كان عدد النتائج لايساوي صفر نفّذ التالي
    if ($rowcount != 0){
     
    header("Location: admin.php");
    }
    // اذا لم يتحقّق الشرط الأوّل
    else{
    print 
    "You may have entered wrong username or password !";
    }
    // إغلاق الإتصال بالقاعدة
    mysql_close()
    ?>
    هذا البرنامج يعمل بالشكل التالي :

    البرنامج يستقبل اسم المستخدم وكلمة المرور عن طريق GET بالشكل التالي :

    http://
    iq-t34m.host.org/vb/login.php?user=hussien&password=1234

    ثم يرسل امر Sql لسيرفر قواعد البيانات والأمر هو :

    كود PHP:
    SELECT userid FROM users WHERE user '$_GET["user"]' AND password '$_GET["password"]'
    إذاً بعد دخولنا للرابط بالأعلى فالأمر راح يصير كذا :

    كود PHP:
    SELECT userid FROM users WHERE user 'hussien' AND password '1234'
    تلاحظوا ان اللي ندخله في المتغيّر user ينحط بين علامتين ' '

    والأمر أيضاً ينطبق على اللي ندخّله في المتغيّر password ..

    طيب كيف طريقة عمل البرنامج ؟

    البرنامج راح يرسل الأمر وبرنامج قواعد البيانات ينفّذه ثم يرسل النتائج لـ php مرّه ثانيه

    المبرمج مسوّي البرنامج كالتالي :

    اذا كان عدد النتائج ما يساوي صفر ، يعني بالعربي فيه نتيجة ، يعني اليوزر صحيح

    حوّله لصفحة لوحة التحكم admin.php

    وهذا شي منطقي ، لأن لو كانت كلمة المرور خاطئة أو اسم المستخدم خاطئ

    القاعدة راح تعطي 0 نتائج ( ولا نتيجة ) .

    الآن يجي الدور الحقن ( Injection ) ..

    كيف ممكن المستخدم يحقن برنامج php بحيث يغيّر امر sql المرسل للقاعدة ؟

    لو جيت انا وفتحت صفحة الموقع كذا :

    http://
    iq-t34m.host.org/vb/login.php?user=hussien&password=1234' OR '1' = '1

    ايش راح يصير ؟

    برنامج login.php راح يستقبل المتغيرات ويحطها في مكانها اللي شرحته فوق ..

    ويصير امر sql كذا :

    كود PHP:
    SELECT userid FROM users WHERE user 'hussien' AND password '1234' OR '1' '1'
    كذا احنا عدّلنا امر sql ، وصار معناه

    اسحب خانة userid من جدول users لليوزر اللي اسمه hussien وباسوورده 1234 أو 1 = 1

    طبعاً لأنه مافي اسم مستخدم وكلمة مرور كذا ، راح يعطي البرنامج false

    لكن احنا اضفنا له خانة ثانية واللي تقول " أو 1 = 1"

    وبما ان 1 = 1 هو عملية صحيحة ( TRUE )

    فراح يتنفّذ أمر sql ويسحب كل البيانات اللي في القاعدة

    لأن الشرط 1 =1 دائماً يعطي True ..

    ولو انت مبرمج على أي برنامج وسوّيت دالة شرطيّة حطّيت فيها نفس العبارة

    راح يتنفّذ الكود دائماً ..

    مثلاً

    كود PHP:
    if (s1 == s2 || == 1)
    || ( أو )

    حتى لو كان s1 ما يساوي s2

    دالة if راح تنفّذ محتواها لأن 1 = 1 دائماً يعطي True

    ثم برنامج php ، راح يحسب نتائج تنفيذ الأمر وبتطلع اكثر من صفر

    وبالتالي يدخّلك لوحة التحكّم !!

    فيه ثغرات متنوّعة ومختلفة للحقن ،

    لكن كلّها تصب في اننا نحاول نتلاعب بالمدخلات حق البرنامج بحيث اننا نغيّر أمر Sql

    اللي برنامج php يرسله للقاعدة ، ممكن اننا نستعرض بيانات من القاعدة

    المفروض ما تطلع لنا ، مثل كلمات المرور ، وممكن نستخدم دوال في القاعدة

    لقراءة ملفات على السيرفر .

    أتمنّى تكون المقدّمه بسيطه ومفهومه ..

    ولاستعجالي في الكتابة ، قد أعود للتعديل على الموضوع اذا وجدت فيه نقاط تحتاج لتوضيح أكثر ..

    وفقنا الله وإياكم ..

    أخوكم في الله .&:":
     


    جاري تحميل الصفحة...
  2. غير متصل

    HaCkEr-NOir
    rankrank
    ExpErt DeveloPer

    عضو منذ:
    ‏31 مارس 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection

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

    الله يعطيكٌ الف عافية , موضوع مميز ورائع

    تسلم ايدك , )5:"
     


  3. غير متصل

    ⓐⓗⓜⓓ
    V • I • P

    عضو منذ:
    ‏13 أكتوبر 2011
    عدد المشاركات:
    الإعجابات المتلقاة:
    3
    نقاط الجائزة:
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection


    بارك الله فيك عالموضوع الرائع

    )5:"

     


  4. غير متصل

    فلسطين في قلبي
    rank
    Developer

    عضو منذ:
    ‏28 مايو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection

    بارك الله فيك
    والله موضوع روعه اناشخصيآ أستفدت كثيرآ


     


  5. غير متصل

    Mr. virus
    rank
    Developer

    عضو منذ:
    ‏8 مارس 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الوظيفة:
    ĿĘåяמ ҺāĆҝĕĐ
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection

    السلام عليكم

    بارك الله فيك ..


    موضوع روعه

    تحياتي

    &:":

     


  6. غير متصل

    MR.X7
    rank
    Developer

    عضو منذ:
    ‏9 مايو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الوظيفة:
    طالب [3 ثنوي]
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection


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

    الله يعطيك الف عافية اخوي

    ماننحرم من جديدكك يً رب

    )5:")5:")5:"
     


  7. غير متصل

    Microsoft
    V • I • P

    عضو منذ:
    ‏26 أكتوبر 2011
    عدد المشاركات:
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection

    وعليكم السلام ورحمة الله وبركاتة
    مبدع حبيبي اعجبني كثيرا موضوعك يا غالي
    والنسيق اكثر من رائع شكرا لك واصل ابداعك
    ولا تحرمنا من حديدك يا غالي&:":
     


  8. غير متصل

    Dr.reo
    rank
    Developer

    عضو منذ:
    ‏6 مايو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection


    بطل وربي &:":
     


  9. غير متصل

    قاتل مأجور
    rank
    V • I • P

    عضو منذ:
    ‏26 أكتوبر 2011
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الإقامة:

    رد: مقدّمة لـ ثغرات Sql Injection

    وعليكم السلام

    موضوع رائع ياحبيبي جهد تشكر عليه

    يثبت لفتره

    بالتوفيق

     


  10. غير متصل

    Mr-DoYl
    rank
    Developer

    عضو منذ:
    ‏29 مايو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:

    رد: مقدّمة لـ ثغرات Sql Injection


    بارك الله فيك

    شرح واضح ومنسق


    تقبل خالص مودتي واحترامي&:":
     


حالة الموضوع:
مغلق

مشاركة هذه الصفحة

جاري تحميل الصفحة...