الصفحة الرئيسية شروحات الفيديو أمن تطبيقات الويب فيديو: ثغرات SQL Injection في صفحات ASP
فيديو: ثغرات SQL Injection في صفحات ASP
تقييم المستخدمين: / 15
عاديممتاز 
الكاتب زيد القريشي   
الجمعة, 29 أكتوبر 2010 01:45

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

 

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

 

الفيديو:



عن الكاتب:


زيد القريشي, مهتم في مجال الحماية والـ Penetration Testing. يملك خبرة في اختبار اختراق شبكات الوايرلس والبرمجة بلغة Python.

التعليقات (27)Add Comment
majed_19845
رد
أرسلت بواسطة: majed_19845 في October 29, 2010
السلام عليكم

بارك الله فيك أخي زيد،
ويشرفني أن تضيفني عندك على المسنجر :
majed_19845@hotmail.com
لأنه بدي أحكي معك بكم موضوع
وشكرا

تحياتي
sec100
...
أرسلت بواسطة: sec100 في October 29, 2010
شكرا جزيلا اخي زيد علي الحلقات الرائعة والمفيده
الله يزيدك من العلم انشاء الله
hackroon
...............................
أرسلت بواسطة: hackroon في October 30, 2010
يعطيك الف عافية على الشرح المميز
اتمنا تكثر الشروحات عن ثغرات المواقع وبالذات ال sql injection
وياليت اذا عندك مواقع او كتب تنصحني بقراءتها لاحتراف ال sql injection
تحط اسماء الكتب او المواقع
M.B.O
استفسار
أرسلت بواسطة: M.B.O في October 30, 2010
اولا اشكرك اخي زيد القرشي على هذا الدرس
عندي بعض الاستفسارات او بعض المشاكل واجهتني اثناء التطبيق
طبقت كل الخطوات التي ذكرتها ولكن عند النقطه التي ذكرت انها خاصة باستخراج الجداول
اي عند تنفيذ هذا الامر
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 ';'.

وبعدها لم استطع اكمال باقي الخطوات ,, هل من طريقة اخرى
لاستعراض اسماء الجداول في قاعدة البيانات ثم استعراض البيانات التي في الحقول
^_^
Owtinod
GooD JoB
أرسلت بواسطة: Owtinod في October 30, 2010
بارك الله فيك اخي الغالي
حقيقة لقد دهشت بمستواك الكبير في ال sql injection
زيد القريشي
...
أرسلت بواسطة: زيد القريشي في October 30, 2010
مشكورين على المرور و الردود الطيبة
@majed: اذا كان لديك اي استفسار فضعه هنا حتى يستفيد الجميع اما اذا اردت شيء اخر فبامكانك مراسلتي على ايميلي zaid@isecur1ty.org لانني لا استعمل برامج المحادثة :(
@M.B.O جرب انك تشفر اسم الجدول بالهيكس و نفذ الاستعلام بعد ازالة علامات التنصيص
مثال:
or 1=convert(int,(select top 1 name from sysobjects where name > 0x00000))
غير 0000 باسم الجدول
HACKER_CH
...........
أرسلت بواسطة: HACKER_CH في October 30, 2010
مشكور اخي الغالي زيد تحياتي لك و شرح رائع واصل ابداعك
M.B.O
استفسار
أرسلت بواسطة: M.B.O في October 30, 2010
اخي زيد اشكرك على ردك
لكن طبقت الي قلت عليه وشفرت اسم الجدول با الهيكس عن طريق هذا الموقع
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 ';'.

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

؟؟؟
زيد القريشي
...
أرسلت بواسطة: زيد القريشي في October 30, 2010
جربت تغلق الاستعلام بـ;-- او --
شيء ثاني لا تقم بمحاولة اختراق مواقع اخرى فنحن ضد هذا الشيء و لن نقبل مساعدتك فيه
M.B.O
استفسار
أرسلت بواسطة: M.B.O في October 30, 2010
اشكرك اخي زيد على الرد
جربت الطريقة لكن ما نفعت !!
وايضا ً احب اقول لك اني ايضا ً ضد هذا الشي ,, ولكن احب ان اطبق لغرض التعلم وليس للتخريب ,, على العموم احب ان اتواصل معك على الايميل اذا لم يكن لديك مانع اخي زيد
Ali
...
أرسلت بواسطة: Ali في October 31, 2010
الله يعطيك العافية يا أخي العزيز "زيد القريشي"
لدي بعض الاستفسارات البيسطة =)

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

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

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

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

أتمنى ألا أكون قد أثقلت عليك.
احترامي لك يا أستاذي.
Ali
...
أرسلت بواسطة: Ali في October 31, 2010
عذراً ، فأنا لا أستطيع تعديل تعليقي ؛ لذا كتبت تعليق أخر كتبت فيه استفسار بسيط آخر =)

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

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

استعلام group_concat يستخدم لاضهار كل المحتويات الموجودة مرة واحدة و هو مستخدم في سيرفرات mysql
Ali
...
أرسلت بواسطة: Ali في November 01, 2010
أخ زيد :-

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

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


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

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

احترامي لك يا صديقي =)
Ali
...
أرسلت بواسطة: Ali في November 01, 2010
' or 1 = convert(int,(select top 1 schema_name from information_schema.schemata))

عذراً كتبته مرة أخرى لأن الحماية محته في تعليقي السابق
زيد القريشي
...
أرسلت بواسطة: زيد القريشي في November 02, 2010
Ali: جميلة المناقشة معك علي كلامك صحيح فكلا الجداول موجودة و كلاهما يستخدمان لاضهار قواعد البيانات الجداول الموجودة في قاعدة البيانات.
في حالة استخدام sysobjects سنحصل على كل الجداول الموجودة في قاعدة البيانات اما اذا استخدمنا information_schema.tables سنحصل على الجداول المصرحة للمستخدم الحالي فقط.
Ali
...
أرسلت بواسطة: Ali في November 02, 2010
شكراً لك أخي زيد والآن تبينت الأمور بفضل من الله ثم منك

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

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

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

احترامي لك يا صديقي
زيد القريشي
...
أرسلت بواسطة: زيد القريشي في November 02, 2010
@Ali صحيح انا شاهدت الفيديو الان و يبدو انني خلطت في الشرح و قلت القواعد بدلا من الجداول فانا متعود على تسمية هذه المسطلحات بالانجليزية
muhammad
استفسار
أرسلت بواسطة: muhammad في November 05, 2010
بسم الله الرحمن الرحيم

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

..0..

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

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

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

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

وشكرا لكم
muhammad
خطأ اخر
أرسلت بواسطة: muhammad في November 05, 2010
نفس عملية الحقن لكن بخطأ اخر

Type mismatch: '[string: "107292 or 1=convert("]'

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

وشكرا مرة اخرى
muhammad
خطأ اخر
أرسلت بواسطة: muhammad في November 05, 2010
نفس الحقنة بموقع اخر وخطأ جديد

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

اعذروني لكثره الاسالة لكني احب ان اعرف كل خطأ لماذا حصل لكي اعرف ماذا علي ان افعل وما هو حل كل خطأ
SyRiAn_34G13
تشكر على هذا الطرح الجميل .
أرسلت بواسطة: SyRiAn_34G13 في November 05, 2010
أشكرك أخي الكريم على هذا الطرح الجميل
المتابعة كانت ممتعة جداً و واضحة ..
ننتظر شروحات أخرى .
تحياتي لك
SyRiAn 34G13
عامر تناني
...
أرسلت بواسطة: dr-google في November 13, 2010
شكرا على كل مجهودا جميع الطاقم الادراي لهذا الموقع والله موقع على ايدي عربية يعني

وفقكم الله
زيد القريشي
...
أرسلت بواسطة: زيد القريشي في November 14, 2010
اهلا فيكم اخوان و منورين
muhammad: لماذا انت تجرب على مواقع لا تملك صلاحية بالتجربة عليها... نحن لا نشجع و لا ندعم اختراق المواقع الاخرى.
نصيحتي لك هو تنصيب ويب سيرفر على جهازك الخاص و محاولة اختراقه ففي هذه الحالة انت لا تضر الناس و انت تنفع نفسك لانك ستتعلم اكثر... بالنسبة للاخطاء فلن اجيبك عليها بشكل مباشر حتى لا يحصل ضرر للناس ... بعض هذه الاخطاء تدل على وجود حماية على الموقع و عدم امكانية حقن الصفحة و الاخرى تدل على وجود خطأ في الاستعلام
Third9
aspx
أرسلت بواسطة: Third9 في December 01, 2010
ماهو الفرق بين الحقن في صفحات asp و aspx
marwan
استفسار للأخ زيد
أرسلت بواسطة: marwan في February 12, 2011

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

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

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

في الأمر 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
ارجو الرد ابن فلسطين
أرسلت بواسطة: fdawy في May 30, 2011
السلام عليكم

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

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

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


أضف تعليق
يجب عليك الاشتراك بالموقع لتتمكن من كتابة التعليقات, الاشتراك مجاني ويستغرق بضع ثوان فقط!
اذا كنت مشترك مسبقا في الموقع فضلاً قم بتسجيل الدخول.

busy
 

SecurityTargets