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

التعليقات
majed_19845
29 أكتوبر، 2010 الساعة 4:02 مالسلام عليكم
بارك الله فيك أخي زيد،
ويشرفني أن تضيفني عندك على المسنجر :
majed_19845@hotmail.com
لأنه بدي أحكي معك بكم موضوع
وشكرا
تحياتي
sec100
29 أكتوبر، 2010 الساعة 4:04 مشكرا جزيلا اخي زيد علي الحلقات الرائعة والمفيده
الله يزيدك من العلم انشاء الله
hackroon
29 أكتوبر، 2010 الساعة 7:18 ميعطيك الف عافية على الشرح المميز
اتمنا تكثر الشروحات عن ثغرات المواقع وبالذات ال sql injection
وياليت اذا عندك مواقع او كتب تنصحني بقراءتها لاحتراف ال sql injection
تحط اسماء الكتب او المواقع
M.B.O
30 أكتوبر، 2010 الساعة 1:57 صاولا اشكرك اخي زيد القرشي على هذا الدرس
عندي بعض الاستفسارات او بعض المشاكل واجهتني اثناء التطبيق
طبقت كل الخطوات التي ذكرتها ولكن عند النقطه التي ذكرت انها خاصة باستخراج الجداول
اي عند تنفيذ هذا الامر
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 ‘;’.
وبعدها لم استطع اكمال باقي الخطوات ,, هل من طريقة اخرى
لاستعراض اسماء الجداول في قاعدة البيانات ثم استعراض البيانات التي في الحقول
^_^
M.B.O
30 أكتوبر، 2010 الساعة 3:58 ماشكرك اخي زيد على الرد
جربت الطريقة لكن ما نفعت !!
وايضا ً احب اقول لك اني ايضا ً ضد هذا الشي ,, ولكن احب ان اطبق لغرض التعلم وليس للتخريب ,, على العموم احب ان اتواصل معك على الايميل اذا لم يكن لديك مانع اخي زيد
Owtinod
30 أكتوبر، 2010 الساعة 4:36 صبارك الله فيك اخي الغالي
حقيقة لقد دهشت بمستواك الكبير في ال sql injection
زيد القريشي
30 أكتوبر، 2010 الساعة 12:55 ممشكورين على المرور و الردود الطيبة
@majed: اذا كان لديك اي استفسار فضعه هنا حتى يستفيد الجميع اما اذا اردت شيء اخر فبامكانك مراسلتي على ايميلي zaid@isecur1ty.org لانني لا استعمل برامج المحادثة 🙁
@M.B.O جرب انك تشفر اسم الجدول بالهيكس و نفذ الاستعلام بعد ازالة علامات التنصيص
مثال:
or 1=convert(int,(select top 1 name from sysobjects where name > 0x00000))
غير 0000 باسم الجدول
HACKER_CH
30 أكتوبر، 2010 الساعة 12:59 ممشكور اخي الغالي زيد تحياتي لك و شرح رائع واصل ابداعك
M.B.O
30 أكتوبر، 2010 الساعة 1:30 ماخي زيد اشكرك على ردك
لكن طبقت الي قلت عليه وشفرت اسم الجدول با الهيكس عن طريق هذا الموقع
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 ‘;’.
والموقع الثاني عند تنفيذ الامر الثاني لم يظهر اي خطأ وفتحت الصفحة عادية
؟؟؟
زيد القريشي
30 أكتوبر، 2010 الساعة 2:06 مجربت تغلق الاستعلام بـ;– او —
شيء ثاني لا تقم بمحاولة اختراق مواقع اخرى فنحن ضد هذا الشيء و لن نقبل مساعدتك فيه
زيد القريشي
31 أكتوبر، 2010 الساعة 3:13 م@M.O.B التعلم شيء جميل ولكن سيكون افضل لو انك تجرب على سيرفر شخصي او موقع مخصص لاختبار الاختراق.
@Ali لهم نفس الغرض و لكن كل منهم مختة بسيرفر معين فـinformation_schema موجودة في سيرفرات mysql اما sysobject فتستعمل في سيرفرات MS SQL.
السيرفر هو MS SQL server كما قلت و الموقع موجود و مخصص لاختبار الاختراق … بامكانك الدخول له من الرابط التالي
http://testasp.vulnweb.com/showforum.asp?id=1
استعلام group_concat يستخدم لاضهار كل المحتويات الموجودة مرة واحدة و هو مستخدم في سيرفرات mysql
houussam
31 أكتوبر، 2010 الساعة 5:05 مالسلام عيكم يا اخوان
انا لا اعرف شيا عن القرصنة اريد ان اتعلم القرصنة لكي احمي جهازي من القارصنة الذي يستعملون معرفتهم في الشر
انا لقد تعرض جهازي الى قرصنة تحدث معي وقالي مذا يوجد في القرص الصلب c و d ومذا يوجد في سطح المكتب واصبح يغلقي في النوافذ التي افتحها
ولله يا اخوان اريد ان اصبح قراصان لكن لاامور السلمية فقط
ارجوكم من يريد تعلمي فل يتصل بي
اخوكم حسام
Ali
31 أكتوبر، 2010 الساعة 11:27 صالله يعطيك العافية يا أخي العزيز “زيد القريشي”
لدي بعض الاستفسارات البيسطة =)
1- ما الفرق بين sysobjects و information_schema.schemata ؟
2- هذا النوع من الاستعلام يختص أي نوع من قواعد البيانات ؟ MSSQL,MSACCESS…etc أما يشمل جميع أنواعها ؟
3- هل السكربت الذي تستعمله على الـ localhost؟ اذا كان كذلك أتمنى أن تطرح السكربت + موضوع يفيدنا في تركيب مفسر الـ asp + برنامج قواعد البيانات “Sql Server” على أنظمة Linux وأوبنتو تحديداً. لأني انبهت قطع الاتصال لديك لكان مع ذلك استمر الموقع =) .
4- على أي أساس استعملت العبارة “أكبر من” ؟ هل تعني العلامة الاستعلام التصاعدي من القاعدة؟
5- أبدعت يا زيد فطمِعنا في كثرة الاستفسارات.
أتمنى ألا أكون قد أثقلت عليك.
احترامي لك يا أستاذي.
Ali
31 أكتوبر، 2010 الساعة 11:34 صعذراً ، فأنا لا أستطيع تعديل تعليقي ؛ لذا كتبت تعليق أخر كتبت فيه استفسار بسيط آخر =)
ألا يوجد استعلام يشابه group أو Concat؟
احترامي ممزوج مع التقدير لك يا أخي زيد .
Ali
1 نوفمبر، 2010 الساعة 6:45 صأخ زيد :-
لا أدري لكن الـ information_schema موجودة فعلاً على الـ Microsoft SQL Server ، وكنت أريد منك توضيح ماهو الفرق بين information_schema.schemata و sysobjects ؟ لأن من خلالهم أعتقد أني أستطيع أن أستعلم عن قواعد البيانات =) .
جرب هذا الاستعلام
أعتقد أنه سيظهر الـ databases التي أنت عليها الآن
وأشكرك سعة صدرك يأخي زيد ، لكن عندما يتعلق الأمر بالـ Web App يصيبني الهوس!
احترامي لك يا صديقي =)
Ali
1 نوفمبر، 2010 الساعة 6:47 ص‘ or 1 = convert(int,(select top 1 schema_name from information_schema.schemata))
عذراً كتبته مرة أخرى لأن الحماية محته في تعليقي السابق
زيد القريشي
1 نوفمبر، 2010 الساعة 8:56 مAli: جميلة المناقشة معك علي كلامك صحيح فكلا الجداول موجودة و كلاهما يستخدمان لاضهار قواعد البيانات الجداول الموجودة في قاعدة البيانات.
في حالة استخدام sysobjects سنحصل على كل الجداول الموجودة في قاعدة البيانات اما اذا استخدمنا information_schema.tables سنحصل على الجداول المصرحة للمستخدم الحالي فقط.
Ali
2 نوفمبر، 2010 الساعة 6:31 صشكراً لك أخي زيد والآن تبينت الأمور بفضل من الله ثم منك
“sysobjects سنحصل على كل الجداول الموجودة”
هذه هي النقطة التي كانت سبب النقاش ففي شرحك قلت أنها لاستخراج القواعد .
والآن وضحت النقطة
احترامي لك يا صديقي
زيد القريشي
2 نوفمبر، 2010 الساعة 12:12 م@Ali صحيح انا شاهدت الفيديو الان و يبدو انني خلطت في الشرح و قلت القواعد بدلا من الجداول فانا متعود على تسمية هذه المسطلحات بالانجليزية
muhammad
5 نوفمبر، 2010 الساعة 2:21 مبسم الله الرحمن الرحيم
اولاو اشكر كل الجهود التي بنت هذا الموقع بالفعل هو احد المواقع العربيه القويه في مجال الحماية والهاكينج
..0..
عندما حاولت ان احقن احد المواقع طهرت لي خطأ ارجو اطلاعي عن الحل
هذه معلومات الحقنه
or 1=convert(int,(db_name()))
الخطأ اللذي ظهر
[Microsoft][ODBC Microsoft Access Driver] Undefined function ‘convert’ in expression.
وشكرا لكم
muhammad
5 نوفمبر، 2010 الساعة 2:28 منفس عملية الحقن لكن بخطأ اخر
Type mismatch: ‘[string: “107292 or 1=convert(“]’
انا اتعلم حقن الـ asp مع العلم باني اعرف طريقه حقن الـ Php
وشكرا مرة اخرى
muhammad
5 نوفمبر، 2010 الساعة 2:31 منفس الحقنة بموقع اخر وخطأ جديد
Application uses a value of the wrong type for the current operation.
اعذروني لكثره الاسالة لكني احب ان اعرف كل خطأ لماذا حصل لكي اعرف ماذا علي ان افعل وما هو حل كل خطأ
SyRiAn_34G13
5 نوفمبر، 2010 الساعة 2:38 مأشكرك أخي الكريم على هذا الطرح الجميل
المتابعة كانت ممتعة جداً و واضحة ..
ننتظر شروحات أخرى .
تحياتي لك
SyRiAn 34G13
dr-google
13 نوفمبر، 2010 الساعة 6:28 صشكرا على كل مجهودا جميع الطاقم الادراي لهذا الموقع والله موقع على ايدي عربية يعني
وفقكم الله
زيد القريشي
13 نوفمبر، 2010 الساعة 7:45 ماهلا فيكم اخوان و منورين
muhammad: لماذا انت تجرب على مواقع لا تملك صلاحية بالتجربة عليها… نحن لا نشجع و لا ندعم اختراق المواقع الاخرى.
نصيحتي لك هو تنصيب ويب سيرفر على جهازك الخاص و محاولة اختراقه ففي هذه الحالة انت لا تضر الناس و انت تنفع نفسك لانك ستتعلم اكثر… بالنسبة للاخطاء فلن اجيبك عليها بشكل مباشر حتى لا يحصل ضرر للناس … بعض هذه الاخطاء تدل على وجود حماية على الموقع و عدم امكانية حقن الصفحة و الاخرى تدل على وجود خطأ في الاستعلام
Third9
1 ديسمبر، 2010 الساعة 9:04 صماهو الفرق بين الحقن في صفحات asp و aspx
marwan
12 فبراير، 2011 الساعة 12:00 مأخي زيد أود أن أشكرك على هذا الفيديو الرائع
لدي بعض الإستفسارات :
الإستفسار الأول :
في الأمر 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
fdawy
30 مايو، 2011 الساعة 2:14 صالسلام عليكم
موقع اسرائيلي في ثغرة asp . في مشكلة عندي عند استخراج الجداول Havij
يعطي خظا اي لا يسنطيع اخراج الجداول .
هل يوجد برامج اخرى افضل
عبدالله حمدان
24 نوفمبر، 2014 الساعة 10:27 مما شاء الله عليك .. الله يوفقك ويزديك من علمه 🙂
Dr.JaWaN
21 يونيو، 2015 الساعة 8:42 صالف شكر لك يا اخ زيد
شرح وافي ومتعوب عليه
شكراً على جهودك
احترامي