جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'got'.
1 نتیجه پیدا شد
-
به نام خدای بزرگ با سلام برنامه ها این اجازه رو دارن که مرتبا از یک تابع موجود در یک کتابخونه ی اشتراکی استفاده کنن. اینجا احتیاج به یک جدول وجود داره برای اشاره به توابع. در برنامه های کامپایل شده بخش مخصوصی به نام جدول پیوند رویه یا به طور خلاصه PLT وجود داره. که حاوی چند آدرس پرش با آدرس متناظر به تابع هستن و اگه نیاز باشه که یک تابع اشتراکی فراخوانی بشه اول کنترل بر روی جدول PLT قرار می گیره و بعدش تابع فراخوانی میشه. ما یک برنامه دارای آسیب پذیری رشته فرمت داریم می تونیم اون رو با objdump دیزاسمبل کنیم و دستورات پرش رو بررسی کنیم. اگه دقت کرده باشید یکی از موارد مربوط به تابع exit هست. اگه بتونیم دستور پرش متناظر با اون رو دستکاری کنیم. که روند اجرا به جای تابع exit به شل کد ما هدایت بشه ما عملا صاحب یک کد مولد پوسته ی ریشه خواهیم شد. بخش PLT رو بیشتر بررسی می کنیم تا به خاصیت ها پی ببریم. همونطور که می بینید خاصیت READONLY در جدول فعال هست و این ممکنه که کار ما رو سخت کنه برای جاینویسی ولی اگه باز هم در خروجی اول دقت کنید دستورات پرش مستقیما بر روی آدرس ها کار نمی کنن بلکه به اشاره گرهایی از اون آدرس ها عمل می کنن. این آدرس ها در بخش دیگری به نام جدول آفست عمومی یا global offset table یا به طور اختصار GOT قرار می گیرن. که فقط خوندنی هم نیستن و برای یافتن آدرس ها و نام توابع می تونیم از نمایش جابجایی پویای موارد برای باینری در objdump استفاده کنیم. منبع : کتاب هنر اکسپلویت نویسی ویرایش دوم fmt_vuln.rar