حالة الموضوع:
مغلق
  1. ThE JoCkEy

    ThE JoCkEy Developer

    الأنتساب:
    ‏27 مايو 2012
    المشاركات:
    60
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الوظيفة:
    hacker dz
    الإقامة:
    Algeria 4 ever
    [​IMG]


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

    مقدّمه :

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

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

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

    http://iq-t34m.host.org/vb/register.php

    فـ برنامج 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

    HaCkEr-NOir ExpErt DeveloPer

    الأنتساب:
    ‏31 مارس 2012
    المشاركات:
    74
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الإقامة:
    CEH
    رد: مقدّمة لـ ثغرات Sql Injection

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

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

    تسلم ايدك , )5:"
     
  3. ⓐⓗⓜⓓ

    ⓐⓗⓜⓓ V • I • P

    الأنتساب:
    ‏13 أكتوبر 2011
    المشاركات:
    142
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    18
    الإقامة:
    الحفر ستيـــ
    رد: مقدّمة لـ ثغرات Sql Injection


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

    )5:"

     
  4. فلسطين في قلبي

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

    الأنتساب:
    ‏28 مايو 2012
    المشاركات:
    13
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الإقامة:
    فلسطين
    رد: مقدّمة لـ ثغرات Sql Injection

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


     
  5. Mr. virus

    Mr. virus Developer

    الأنتساب:
    ‏8 مارس 2012
    المشاركات:
    23
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الوظيفة:
    ĿĘåяמ ҺāĆҝĕĐ
    الإقامة:
    الأمارات
    رد: مقدّمة لـ ثغرات Sql Injection

    السلام عليكم

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


    موضوع روعه

    تحياتي

    &:":

     
  6. MR.X7

    MR.X7 Developer

    الأنتساب:
    ‏9 مايو 2012
    المشاركات:
    44
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    الوظيفة:
    طالب [3 ثنوي]
    الإقامة:
    مكة المكرمة
    رد: مقدّمة لـ ثغرات Sql Injection


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

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

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

    )5:")5:")5:"
     
  7. Microsoft

    Microsoft V • I • P

    الأنتساب:
    ‏26 أكتوبر 2011
    المشاركات:
    193
    الإعجابات المتلقاة:
    3
    نقاط الجائزة:
    18
    الإقامة:
    home
    رد: مقدّمة لـ ثغرات Sql Injection

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

    Dr.reo Developer

    الأنتساب:
    ‏6 مايو 2012
    المشاركات:
    58
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الإقامة:
    الجزائر
    رد: مقدّمة لـ ثغرات Sql Injection


    بطل وربي &:":
     
  9. قاتل مأجور

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

    الأنتساب:
    ‏26 أكتوبر 2011
    المشاركات:
    13
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الإقامة:
    فلسطين
    رد: مقدّمة لـ ثغرات Sql Injection

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

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

    يثبت لفتره

    بالتوفيق

     
  10. Mr-DoYl

    Mr-DoYl Developer

    الأنتساب:
    ‏29 مايو 2012
    المشاركات:
    34
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    رد: مقدّمة لـ ثغرات Sql Injection


    بارك الله فيك

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


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

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