فازینگ دستی سرریز بافر

منتشر شده در دسته : متااسپلوییت پیشرفته

فازینگ چیست ؟ انواع فازینگ کدامند ؟ در این بخش انواع فازینگ را معرفی کرده و راهکارهایی در این زمینه ارایه می کنیم

فازینگ

تست فاز یا فازینگ (Fuzzing) یک تکنیک تست نرم افزاری به شمار می‌رود که اغلب به صورت خودکار و گاهی اوقات به صورت نیمه خودکار صورت می‌پذیرد . فازینگ مستلزم ارایه ورودی های نامعتبر ، غیر منتظره و تصادفی به برنامه کامپیوتری می‌باشد . در نتیجه این رخداد سیستم کامپیوتری یا نرم‌افزار دچار شکست می‌شود . در نتیجه شکست شخص نفوذگر یا همان تستر به دنبال آدرس‌های حافظه می‌گردد تا از طریق آدرس‌های حافظه دستورالعمل مورد نظر خود را به برنامه بدهد .
فازرها اغلب در شرایطی که برنامه دچار سرریز بافر می‌شود به خوبی عمل می‌کنند . فازینگ اولین گام به منظور بکارگیری آسیب‌پذیری های ناشناخته درون برنامه می‌باشد . هرچه بیشتر با این تکنیک آشنایی پیدا کنید شانس موفقیت شما در یافتن باگ های نرم افزاری بیشتر خواهد بود .

انواع فازینگ

بر اساس نوع هدف انواع فازینگ  به دو دسته لوکال و ریموت تقسیم‌بندی می‌شود که هر یک ابزارهای خاص خود را دارد . ولی نکته مهم این است که باگ های ریموت از اهمیت بالاتری برخوردارند چرا که برای تست آن‌ها نیازی به تعامل با کاربر ندارید و تنها کافی است که اکسپلوییت را به ماشین هدف ارسال کنید .

فازینگ لوکال

فازینگ لوکال شامل تست اپلیکیشن هایی می‌باشد که به صورت لوکال در اختیار شما هستند . فازینگ لوکال شامل :

  • فازینگ خط فرمان : فاز اپلیکیشن ها از طریق خط فرمان یا متغیرهای محیطی
  • فازینگ فایل فرمت : فاز اپلیکیشن هایی که قادر به خواندن فایل‌ها از یک فرمت خاص ورودی هستند .
  • کرنل فازینگ : فاز ویژگی‌های کرنل ، ماژول های کرنل و تماس های سیستمی .

فازینگ ریموت

ریموت فازینگ مستلزم فاز هدف به صورت ریموت یا شبکه می‌باشد . فازینگ ریموت شامل :

  • فاز پروتکل های شبکه : فاز اپلیکیشن ها یا حتی کرنلی که پروتکل خاصی را پیاده‌سازی می‌کند .
  • فاز پایگاه داده : فاز ماژول های پایگاه داده و یا قوانین اعتبار سنجی ورودی های پایگاه داده .
  • فاز اپلیکیشن های وب : فاز وکتورهای ورودی اپلیکشن های وب که بر روی یک سرور میزبانی قرار دارند .

مثال فازینگ لوکال :

ابزارهای مختلفی به منظور فازینگ لوکال وجود دارند که بسته به محیط هدف متفاوت خواهند بود . در اینجا ما قصد معرفی ابزارها را نداریم و می‌خواهیم با فازینگ دستی یک اپلیکیشن ساده آشنا شویم . به همین منظور کد زیر را در نظر بگیرید :

#include
int main(void)
{
char buff15;
int pass = 0;
printf(“\n Enter the password : \n”);
gets(buff);
if(strcmp(buff, “mrnakupenda”))
{
printf (“\n Wrong Password \n”);
}
else
{
printf (“\n Correct Password \n”);
pass = 1;
}
if(pass)
{
printf (“\n welcome MrNakup3nda you got Root privileges \n”);
}
return 0;
}

این کد در زبان برنامه نویسی سی نوشته شده است . آن را درون یک فایل با نام buffer.c ذخیره کنید . دانلود از سرور نت آموز

فازینگ دستی سرریز بافر

سپس آن را با استفاده از gcc کامپایل

فازینگ دستی سرریز بافر

و به صورت زیر اجرا کنید :

فازینگ دستی سرریز بافر

همانطور که می‌بینیم در صورتی که رمز netamooz را وارد کنیم ، با پیامد خوشامد مواجه می‌شویم . حال در صورت وارد کردن پسورد اشتباه با پیام پسورد اشتباه است مواجه می‌شویم . به دلیل اینکه ظرفیت بافر ما محدود است در صورتی که متغیر buff مقداری بیش از ۱۰ بایت را به عنوان پسورد وارد کنیم ، مقدار بافر سرریز شده و بر روی مقدار متغیر pass ریخته شده و این مقدار به غیر از صفر تغییر یافته و مجوز عبور صادر می‌شود .

صاحب امتیاز نت آموز : نویسنده , مدرس و متخصص در زمینه امنیت شبکه های رایانه ای

نظرات غیرمرتبط با محتوای این مطلب تایید نخواهند شد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *