السلام عليكم بسم الله الرحمن الرحيم اليوم هنشرح كيفية استغلال ثغرات Blind sql injection auth Bypass طبعا فى ناس كتيرة تريد تفهم هذا النوع من...

شرح بالصور لثغرات Blind Injection AuthBypas وترقيعها
[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

get-8-2010-almlf_com_6b0252lu.gif


طبعا بعد ادخال اسم الادمن وكلمة المرور سوف يتم الدخول الى لوحة التحكم طيب الان

نريد نشوف كيف هندخل بمعرفة اسم الادمن بدون كلمة المرور

هنروح نكتب فى خانة ال username

PHP:
Dolla' --

get-8-2010-almlf_com_2hnfymg2.gif



طيب نشرح الى بالون الاحمر ده الى انا كتبته فى خانة ال username



اول شي وضعت اسم الادمن Dolla وضيفت علامة التنصيص ' عشان اقفل بيها

العلامة الموجودة بالquery لكى تكون ال -- خارج علامة التنصيص طيب وشو فايدة

ال -- : ؟؟ هي تستخدم لل commenting out : اى للتعليق واى شي بيجى

بعدها بتعتبر تعليق ولازم تبقى خارج علامة التنصيص عشان يتم تنفيذها وانا وضعتها لكى اتجاهل

شرط ال Password الموجود بال query معنى هذا انه هينظر لل paasword

على انه تعليق يعنى ممكن نحط اى شي فى خانة ال password او نتركها فاضية

طيب افرض الان اننا مش عارفبن اسم الادمن واريد ادخل الى لوحة التحكم

هنضع بخانة ال username وال password الكود الاتى

PHP:
'or 't'='t'

وهيك بيكون ال 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

PHP:
' or ''='


get-8-2010-almlf_com_n09m984z.gif



راح يكون الquery true طبعا لان ال ''=''


طيب الان معانا كود برمجى من سكربت Mobilelib Gold v3

نشوف الكود

get-8-2010-almlf_com_qvs0cpq4.gif



نلاحظ هنا انه تم طلب المتغير $adminname و $adminpass

وتم حمايتهم بالدالة strip_tags من اضافة الاوسمة <>

لاكن بنفس الوقت لا نلاحظ انه تم الحماية بشكل سليم لانه ما استخدم اى دالة تمنع اضافة ال '

نشوف الكويرى

PHP:
$adminlogin=@mysql_query("SELECT * FROM mobilelib_admin WHERE adminn='$adminname' AND adminpass='$Xadminpass'");


وكان ممكن يتم الحماية من خلال دالة mysql_real_escape_string()

وهي دالة تقوم باضافة backslash / الى المدخلات الخبية مثل ال ' وال "



get-8-2010-almlf_com_l17iae82.gif



بالــتـوفـيـق
تحياتي

 
شرح بالصور لثغرات Blind Injection AuthBypas وترقيعها
الله يعطيك الف عافية اخ ماستر
والله الدرس دسم وصعب بنفس الوقت
وفقك الله
 
شرح بالصور لثغرات Blind Injection AuthBypas وترقيعها
[align=center]ahmedeto
شكرا على مرورك اخي الغالي منور
تحياتي
[/align]
 
أعلى