امن وحماية تطبيقات الويب - فيديوشروحات الفيديو

فيديو: ثغرات SQL Injection في صفحات ASP

تم أرشفة هذا المحتوى


شرح اكتشاف واستغلال ثغرات SQL injection في صفحات ASP بسيرفرات Windows. قام الأخ أحمد العنتري بشرح إختراق MS SQL Server 2000 بإستخدام Sqlninja سابقا ولكن اليوم سنشرح سحب المعلومات من قاعدة البيانات عن طريق ثغرات SQL Injection لكن بشكل يدوي.

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

الفيديو:

‫30 تعليقات

  1. يعطيك الف عافية على الشرح المميز
    اتمنا تكثر الشروحات عن ثغرات المواقع وبالذات ال sql injection
    وياليت اذا عندك مواقع او كتب تنصحني بقراءتها لاحتراف ال sql injection
    تحط اسماء الكتب او المواقع

  2. اولا اشكرك اخي زيد القرشي على هذا الدرس
    عندي بعض الاستفسارات او بعض المشاكل واجهتني اثناء التطبيق
    طبقت كل الخطوات التي ذكرتها ولكن عند النقطه التي ذكرت انها خاصة باستخراج الجداول
    اي عند تنفيذ هذا الامر
    id=9 or 9=convert(int,(select+top+1+name+from+sysobjects))
    ظهر لي نفس الخطأ الذي ظهر لك لكن استغربت من اسم الجدول
    ظهر لي الاسم بهذا الشكل “sysrowsetcolumns”
    وعند تنفيذ الخطوة التي بعدها اي عند تنفيذ هذا الامر
    or 1=convert(int,(select+top+1+name+from+sysobjects+where+
    name+>’sysrowsetcolumns’))
    ظهرت لي الرسالة التالية

    Microsoft OLE DB Provider for SQL Server error ‘80040e14’

    An expression of non-boolean type specified in a context where a condition is expected, near ‘;’.

    وبعدها لم استطع اكمال باقي الخطوات ,, هل من طريقة اخرى
    لاستعراض اسماء الجداول في قاعدة البيانات ثم استعراض البيانات التي في الحقول
    ^_^

  3. اشكرك اخي زيد على الرد
    جربت الطريقة لكن ما نفعت !!
    وايضا ً احب اقول لك اني ايضا ً ضد هذا الشي ,, ولكن احب ان اطبق لغرض التعلم وليس للتخريب ,, على العموم احب ان اتواصل معك على الايميل اذا لم يكن لديك مانع اخي زيد

  4. مشكورين على المرور و الردود الطيبة
    @majed: اذا كان لديك اي استفسار فضعه هنا حتى يستفيد الجميع اما اذا اردت شيء اخر فبامكانك مراسلتي على ايميلي [email protected] لانني لا استعمل برامج المحادثة 🙁
    @M.B.O جرب انك تشفر اسم الجدول بالهيكس و نفذ الاستعلام بعد ازالة علامات التنصيص
    مثال:
    or 1=convert(int,(select top 1 name from sysobjects where name > 0x00000))
    غير 0000 باسم الجدول

  5. اخي زيد اشكرك على ردك
    لكن طبقت الي قلت عليه وشفرت اسم الجدول با الهيكس عن طريق هذا الموقع
    http://www.string-functions.com/string-hex.aspx
    وكان ناتج تشفير كلمة sysrowsetcolumns الى 737973726f77736574636f6c756d6e73
    وضعته بهذه الطريقة

    or 1=convert(int,(select top 1 name from sysobjects where name >737973726f77736574636f6c756d6e73))
    ثم وضعته بهذه الطريقة

    or 1=convert(int,(select top 1 name from sysobjects where name >0x737973726f77736574636f6c756d6e73))

    جربته على موقعين الموقع الاولى طلع لي هذه الرسالة مع الامرين
    Microsoft OLE DB Provider for SQL Server error ‘80040e14’

    Incorrect syntax near ‘;’.

    والموقع الثاني عند تنفيذ الامر الثاني لم يظهر اي خطأ وفتحت الصفحة عادية

    ؟؟؟

  6. جربت تغلق الاستعلام بـ;– او —
    شيء ثاني لا تقم بمحاولة اختراق مواقع اخرى فنحن ضد هذا الشيء و لن نقبل مساعدتك فيه

  7. @M.O.B التعلم شيء جميل ولكن سيكون افضل لو انك تجرب على سيرفر شخصي او موقع مخصص لاختبار الاختراق.
    @Ali لهم نفس الغرض و لكن كل منهم مختة بسيرفر معين فـinformation_schema موجودة في سيرفرات mysql اما sysobject فتستعمل في سيرفرات MS SQL.
    السيرفر هو MS SQL server كما قلت و الموقع موجود و مخصص لاختبار الاختراق … بامكانك الدخول له من الرابط التالي
    http://testasp.vulnweb.com/showforum.asp?id=1

    استعلام group_concat يستخدم لاضهار كل المحتويات الموجودة مرة واحدة و هو مستخدم في سيرفرات mysql

  8. السلام عيكم يا اخوان
    انا لا اعرف شيا عن القرصنة اريد ان اتعلم القرصنة لكي احمي جهازي من القارصنة الذي يستعملون معرفتهم في الشر
    انا لقد تعرض جهازي الى قرصنة تحدث معي وقالي مذا يوجد في القرص الصلب c و d ومذا يوجد في سطح المكتب واصبح يغلقي في النوافذ التي افتحها
    ولله يا اخوان اريد ان اصبح قراصان لكن لاامور السلمية فقط
    ارجوكم من يريد تعلمي فل يتصل بي
    اخوكم حسام

  9. الله يعطيك العافية يا أخي العزيز “زيد القريشي”
    لدي بعض الاستفسارات البيسطة =)

    1- ما الفرق بين sysobjects و information_schema.schemata ؟
    2- هذا النوع من الاستعلام يختص أي نوع من قواعد البيانات ؟ MSSQL,MSACCESS…etc أما يشمل جميع أنواعها ؟

    3- هل السكربت الذي تستعمله على الـ localhost؟ اذا كان كذلك أتمنى أن تطرح السكربت + موضوع يفيدنا في تركيب مفسر الـ asp + برنامج قواعد البيانات “Sql Server” على أنظمة Linux وأوبنتو تحديداً. لأني انبهت قطع الاتصال لديك لكان مع ذلك استمر الموقع =) .

    4- على أي أساس استعملت العبارة “أكبر من” ؟ هل تعني العلامة الاستعلام التصاعدي من القاعدة؟

    5- أبدعت يا زيد فطمِعنا في كثرة الاستفسارات.

    أتمنى ألا أكون قد أثقلت عليك.
    احترامي لك يا أستاذي.

  10. عذراً ، فأنا لا أستطيع تعديل تعليقي ؛ لذا كتبت تعليق أخر كتبت فيه استفسار بسيط آخر =)

    ألا يوجد استعلام يشابه group أو Concat؟

    احترامي ممزوج مع التقدير لك يا أخي زيد .

  11. أخ زيد :-

    لا أدري لكن الـ information_schema موجودة فعلاً على الـ Microsoft SQL Server ، وكنت أريد منك توضيح ماهو الفرق بين information_schema.schemata و sysobjects ؟ لأن من خلالهم أعتقد أني أستطيع أن أستعلم عن قواعد البيانات =) .

    جرب هذا الاستعلام

    أعتقد أنه سيظهر الـ databases التي أنت عليها الآن

    وأشكرك سعة صدرك يأخي زيد ، لكن عندما يتعلق الأمر بالـ Web App يصيبني الهوس!

    احترامي لك يا صديقي =)

  12. ‘ or 1 = convert(int,(select top 1 schema_name from information_schema.schemata))

    عذراً كتبته مرة أخرى لأن الحماية محته في تعليقي السابق

  13. Ali: جميلة المناقشة معك علي كلامك صحيح فكلا الجداول موجودة و كلاهما يستخدمان لاضهار قواعد البيانات الجداول الموجودة في قاعدة البيانات.
    في حالة استخدام sysobjects سنحصل على كل الجداول الموجودة في قاعدة البيانات اما اذا استخدمنا information_schema.tables سنحصل على الجداول المصرحة للمستخدم الحالي فقط.

  14. شكراً لك أخي زيد والآن تبينت الأمور بفضل من الله ثم منك

    “sysobjects سنحصل على كل الجداول الموجودة”

    هذه هي النقطة التي كانت سبب النقاش ففي شرحك قلت أنها لاستخراج القواعد .

    والآن وضحت النقطة

    احترامي لك يا صديقي

  15. @Ali صحيح انا شاهدت الفيديو الان و يبدو انني خلطت في الشرح و قلت القواعد بدلا من الجداول فانا متعود على تسمية هذه المسطلحات بالانجليزية

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

    اولاو اشكر كل الجهود التي بنت هذا الموقع بالفعل هو احد المواقع العربيه القويه في مجال الحماية والهاكينج

    ..0..

    عندما حاولت ان احقن احد المواقع طهرت لي خطأ ارجو اطلاعي عن الحل
    هذه معلومات الحقنه

    or 1=convert(int,(db_name()))

    الخطأ اللذي ظهر

    [Microsoft][ODBC Microsoft Access Driver] Undefined function ‘convert’ in expression.

    وشكرا لكم

  17. نفس عملية الحقن لكن بخطأ اخر

    Type mismatch: ‘[string: “107292 or 1=convert(“]’

    انا اتعلم حقن الـ asp مع العلم باني اعرف طريقه حقن الـ Php

    وشكرا مرة اخرى

  18. نفس الحقنة بموقع اخر وخطأ جديد

    Application uses a value of the wrong type for the current operation.

    اعذروني لكثره الاسالة لكني احب ان اعرف كل خطأ لماذا حصل لكي اعرف ماذا علي ان افعل وما هو حل كل خطأ

  19. أشكرك أخي الكريم على هذا الطرح الجميل
    المتابعة كانت ممتعة جداً و واضحة ..
    ننتظر شروحات أخرى .
    تحياتي لك
    SyRiAn 34G13

  20. شكرا على كل مجهودا جميع الطاقم الادراي لهذا الموقع والله موقع على ايدي عربية يعني

    وفقكم الله

  21. اهلا فيكم اخوان و منورين
    muhammad: لماذا انت تجرب على مواقع لا تملك صلاحية بالتجربة عليها… نحن لا نشجع و لا ندعم اختراق المواقع الاخرى.
    نصيحتي لك هو تنصيب ويب سيرفر على جهازك الخاص و محاولة اختراقه ففي هذه الحالة انت لا تضر الناس و انت تنفع نفسك لانك ستتعلم اكثر… بالنسبة للاخطاء فلن اجيبك عليها بشكل مباشر حتى لا يحصل ضرر للناس … بعض هذه الاخطاء تدل على وجود حماية على الموقع و عدم امكانية حقن الصفحة و الاخرى تدل على وجود خطأ في الاستعلام

  22. أخي زيد أود أن أشكرك على هذا الفيديو الرائع

    لدي بعض الإستفسارات :

    الإستفسار الأول :

    في الأمر or 1=convert
    الرقم واحد هو نفسو لل id
    كما لدينا في موقع التجارب ؟؟

    ( http://testasp.vulnweb.com/showforum.asp?id=1 or 1=convert )

    الإستفسار الثاني :

    لما اردت استخرااج اسم أدمن الموقع و طلع مو هو باستعمال أمر
    convert(int,(select+top+1+uname+from+users

    اضظريت الى استعمال الأمر
    convert(int,(select+top+1+upass+from+users+where+uname=
    ‘admin

    هنا في هذا الأمر يجب علنا أن قموم بالتخمين لإسم صاحب الموقع ( اللي هو admin ) ؟؟؟ صح ؟؟

    اذ كان صح فمن الصعب العثور على اسم الأدمن ؟؟

    فهل هناك حل ؟؟

    اللي هو admin

  23. السلام عليكم

    موقع اسرائيلي في ثغرة asp . في مشكلة عندي عند استخراج الجداول Havij

    يعطي خظا اي لا يسنطيع اخراج الجداول .

    هل يوجد برامج اخرى افضل

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى