آزمایش بکارگیری سرریز بافر

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

آزمایش بکارگیری سرریز بافر

گام اول : باز کردن ویرایشگر متنی خود

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

گام دوم : نوشتن کد

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

آزمایش بکارگیری سرریز بافر
ابتدا دو متغیر با نوع کاراکتری char اعلان شده‌اند .

سپس حافظه را برای هر کدام از این متغیرها با استفاده از دستور malloc (memory allocation) اختصاص داده‌ایم .

پس از تخصیص حافظه دو عبارت printf داریم که موقعیت حافظه دو متغیر را نمایش می‌دهند . عبارت printf سومی تعداد بایت های بین دو موقعیت حافظه را محاسبه می‌کند .

عبارت printfسومی از کاربر می‌پرسد که بهترین مکان برای یادگیری امنیت شبکه کجا است ؟ در ادامه آن تابع gets پاسخ کاربر را درون متغیر place قرار می‌دهد .
در ادامه هم یک تابع printf دیگر داریم که پاسخ سؤال قبلی را چاپ می‌کند .

در نهایت آخرین خط هر چیزی که درون متغیر dastoor وجود دارد را چاپ می‌کند . در صورتی که متغیر خالی باشد در نتیجه هیچ دستوری اجرا نمی‌شود .

این دستور را در فایلی با نام bufferoverflow.c ذخیره کنید .

گام سوم : کامپایل کردن

گام بعدی کامپایل کردن برنامه خودمان است . کامپایل کردن را پروسه تبدیل کد منبع (در اینجا زبان برنامه نویسی C) به کد ماشین می‌باشد . هر زمان که یک کد را می نویسید کامپایل کردن آن ضروری است . در مقابل پایتون چنین محدودیتی ندارد چرا که زبان برنامه نویسی تفسیری می‌باشد . به منظور کامپایل کردن کد خود از کامپایلر gcc استفاده خواهیم کرد و خروجی را با نام bufferoverflow ذخیره می‌کنیم .

آزمایش بکارگیری سرریز بافر

گام چهارم : برنامه را اجرا کنید

اکنون به صورت زیر برنامه را اجرا می‌کنیم .

همانطور که می‌بینیم ابتدا موقعیت حافظه متغیرهای makan و dastoor به ما نمایش داده می‌شود و سپس محاسبه می‌کند که ۳۲ بایت بین این دو موقعیت حافظه فضا وجود دارد .این فضا ممکن است در سیستم عامل های مختلف متفاوت باشد . سپس از کاربر سؤالی پرسیده می‌شود و پاسخ چاپ می‌شود .

گام پنجم : سرریز بافر
اکنون این برنامه را اجرا کرده و سعی در سرریز فضای حافظه می‌کنیم . به این منظور کافی است در محلی که از ما ورودی می‌خواهد مقداری بیش از ۳۲ کاراکتر را وارد کنید و در این شرایط است که فاصله بین دو متغیر پر شده و دو متغیر تلاقی کرده و سرریز بافر در فضای حافظه ایجاد می‌شود . شما می‌توانید پس از ایجاد سرریز بافر هر دستور دلخواهی را اجرا کنید . مثلاً در این بلافاصله پس از ارسال ۳۲ کاراکتر بی‌معنی دستور cat /etc/shadow را وارد کرده تا این فایل محرمانه سیستم را نمایش دهیم .

آزمایش بکارگیری سرریز بافر

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

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

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

پاسخ دهید

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