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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

پاسخ دهید

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