برچسب Archives: immunitydbg

نقش کاراکترهای مخرب در پردازش اکسپلویت و نحوه یافت آنها

اگر کمی با اکسپلویت نویسی و نحوه اکسپلویت کردن برنامه آشنایی داشته باشید بدون شک با مفهوم Bad Char آشنا هستید. Bad Char در اکسپلویت کاراکترهایی را می گویند که از وارد شدن کامل اکسپلویت به درون حافظه جلوگیری می کنند. بعنوان مثال در ورودی برنامه های C/C++ اگر دربین رشته ورودی 0x00 وجود داشته باشد به عنوان انتهای ورودی محسوب می شود و بعد از کاراکتر 0x00 نادیده گرفته می شود، بنابراین Bad Char ها یکی از ضروریات است که بایستی متناسب با هدف، آنها را بدانیم.

سوال : چگونه متناسب با هدف Bad Char ها را بدست آوریم؟؟

جواب : بایستی تمامی کاراکتر های که ممکن است بعنوان Bad Char محسوب گردند را لیست نموده  تا بتوانیم توسط سعی و خطا تک،تک آنهارا بدست آوریم. این لیست در واقع از 0x00 تا 0xFF می باشد.

لیست ایجاد شده را بایستی در اکسپلویت مان بعد از Return Address قرار می دهیم بدین دلیل که Bad Char از بازنویسی Return Address جلوگیری نکند تا بتوانیم درون حافظه چک کنیم که لیست مان تا چه مکانی کپی شده اند و Bad Char چه بوده که باعث جلوگیری از کپی کامل اکسپلویت درون حافظه شده است.

در این مقاله برروی vulnserver که توسط Stephen Bradshaw نوشته شده و یک برنامه آسیب پذیر جهت تست و مثال آموزشی مورد استفاده قرار می گیرد، تست خود را انجام می دهیم.

بعد از اضافه نمودن لیست Bad Char به کدهایمان و ارسال آن به پورت vulnserver اولین راهکار این خواهد بود که بصورت دستی حافظه را چک کنیم تا کاراکتر را بدست آوریم ولی اینکار کمی زمانبر و کسل کننده است. راهکار بعدی استفاده از mona خواهد بود که بهتر از حالت قبل است، پس روند کارمان با استفاده از ابزار mona خواهد بود.

 

اطلاعات بیشتر