[align=center]السلام عليكم[/align]
بسم الله الرحمن الرحيم اليوم هنشرح كيفية استغلال ثغرات Blind sql Injection auth Bypass
طبعا فى ناس كتيرة تريد تفهم هذا النوع من الثغرات لانها بتعانى تطبيقه بدون فهمه واليوم انا هشرحها
اسباب الثغرة :- طبعا السبب جهل المبرمج بحيث انه لم يعمل فلترة للمدخلات التى يتم ادخالها
فى ال query الخاص بالدخول الى لوحة التحكم ولذلك قد يضيف بعض الناس مدخلات خبيثة string
قد تؤدى الى دخول لوحة التحكم بدون password او حتى معرفة اسم ال Admin
طيب نشوف مع بعض هنا Query خاصة بتمرير اسم الadmin وال password الخاص فيه
من خلال الlogin Box الي بلوحة التحكم ...
كود PHP:
$query = "SELECT * FROM admin WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'"
طبعا هنا ال query بيطلب اسم المستخدم وكلمة مرور الadmin من خلال Post
طيب ولنفترض ان اسم ال admin الحقيقى Dolla وكلمة مروره 123456
والان ادخلناهم بال Login box راح يكون ال query
طبعا بعد ادخال اسم الادمن وكلمة المرور سوف يتم الدخول الى لوحة التحكم طيب الان
نريد نشوف كيف هندخل بمعرفة اسم الادمن بدون كلمة المرور
هنروح نكتب فى خانة ال username
طيب نشرح الى بالون الاحمر ده الى انا كتبته فى خانة ال username
اول شي وضعت اسم الادمن Dolla وضيفت علامة التنصيص ' عشان اقفل بيها
العلامة الموجودة بالquery لكى تكون ال -- خارج علامة التنصيص طيب وشو فايدة
ال -- : ؟؟ هي تستخدم لل commenting out : اى للتعليق واى شي بيجى
بعدها بتعتبر تعليق ولازم تبقى خارج علامة التنصيص عشان يتم تنفيذها وانا وضعتها لكى اتجاهل
شرط ال Password الموجود بال query معنى هذا انه هينظر لل paasword
على انه تعليق يعنى ممكن نحط اى شي فى خانة ال password او نتركها فاضية
طيب افرض الان اننا مش عارفبن اسم الادمن واريد ادخل الى لوحة التحكم
هنضع بخانة ال username وال password الكود الاتى
وهيك بيكون ال query
كود PHP:
http://www.almlf.com/get-8-2010-almlf_com_wuh7bv78.gif
طيب طبعا وضعنا علامة التنصيص بعد اسم nesha حتى نقفل علامتى التنصين لكى تكون ال or
خارج علامة التنصيص وهيك هتقدر or تتنفذ طيب شو وظيفة OR
:- وظيفة oR فى ال Query انها تتطلب قيمة شرط واحد صحيح بال query
ليجعل ال query يطبق وينفذ بمعنى اننا ادخلنا فى اسم ال username
nesha واحنا نعرف فى نفس الوقت ان اسم الادمن Dolla اى اننا ادخلنا قيمة خاطئة
لاكن بنفس الوقت ال 't'='t' وهي قيمة true بكده الquery الخاص فينا هيتم تطبيقه
لوجودة قيمة true وهي ان كلمة 't' بتساوى كلمة 't'
نفس الشىء بخانة ال password صحيح اننا وضعنا كلمة المرور 123 وهي قيمة خاطئة
لاكن بنفس الوقت وجود OR مع قيمة TRUE صحيحة الى هي كلمة't' بتساوى ال 't'
راح يجعل مجمل قيمة ال query صحيح "TRUE"
طيب لو عاوزين نسجل الدخول باول user موجود بجدول ال users
نكتب فى الusername وال password
راح يكون الquery true طبعا لان ال ''=''
طيب الان معانا كود برمجى من سكربت Mobilelib Gold v3
نشوف الكود
نلاحظ هنا انه تم طلب المتغير $adminname و $adminpass
وتم حمايتهم بالدالة strip_tags من اضافة الاوسمة <>
لاكن بنفس الوقت لا نلاحظ انه تم الحماية بشكل سليم لانه ما استخدم اى دالة تمنع اضافة ال '
نشوف الكويرى
كود PHP:
$adminlogin=@mysql_query("SELECT * FROM mobilelib_admin WHERE adminn='$adminname' AND adminpass='$Xadminpass'");
وكان ممكن يتم الحماية من خلال دالة mysql_real_escape_string()
وهي دالة تقوم باضافة backslash / الى المدخلات الخبية مثل ال ' وال "
بالــتـوفـيـق
تحياتي
avp fhgw,v geyvhj Blind Injection AuthBypas ,jvrduih