#Use_After_Free #Linux
در تصویر یک مثال ساده از نحوه رخداد این آسیب پذیری رو به نمایش گذاشتیم و همونطور که مشخصه بواسطه یک struct با نام
UAFME
یک تابع درونش بصورت void تعریف شده که از نوع اشاره گر هستش اما در ادامه دو تابع دیگه رو داریم با نام های
()good
و
()bad
که یک تابع
()print
درون هر کدوم تعریف شده و یک string رو قراره چاپ بکنه
اما در تابع اصلی یعنی
()main
میبینیم که همون اول کار از ساختمان
UAFME
یک شیُ ساخته میشه که بصورت اشاره گر بوده و حافظه رو بواسطه تابع
()malloc
رزرو کرده با اندازه ساختمان
UAFME
اما در ادامه شیُ مربوطه یعنی
malloc1*
اشاره داره به تابع درون ساختمان یعنی
vulnfunc
که مقدار تابع
good
بهش پاس داده شده، در ادامه تابع
()vulnfunc
فراخوانی میشه، اینجا با این تابع که در حافظه Heap هستش تماس برقرار میشه
این شیُ بواسطه تابع
()free
آزاد شده است، اما در ادامه متغییر دومی که بصورت اشاره گر با نام
malloc2*
تعریف شده که مقدار 0 رو داره و در ادامه تابع
bad
بهش پاس داده شده، اینجا چون اندازه اشاره گر مربوطه به اندازه متغییر
malloc2
هستش، به همون قسمت قبل در حافظه ارجاع داده شده.
@Unk9vvN