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

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

فازینگ

تست فاز یا فازینگ (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 ریخته شده و این مقدار به غیر از صفر تغییر یافته و مجوز عبور صادر می‌شود .

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

نوشته های مرتبط

نظرات غیرمرتبط با موضوع این مطلب تایید نخواهند شد. این سوالات را می توانید از بخش پشتیبانی آموزشی مطرح کنید

پاسخ دهید

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