نویسندهٔ یک پژوهش مستقل درباره PHP2Shell میخواهد فراتر از توضیحهای سطحی، رفتار داخلی PHP و روند exploit را بررسی کند. او میگوید این نوشته بر برداشت شخصیاش از کد PHP، آزمایشها و بررسیهای خودش تکیه دارد؛ تحلیل رسمی نیست و ممکن است اشتباههایی داشته باشد. بخش در دسترس، مقدمه و مبانی حافظه را پوشش میدهد، نه مراحل عملی exploit.
نقطهٔ شروع، تفاوت Stack و Heap و نحوهٔ allocation است. نویسنده توضیح میدهد که allocator ممکن است بهجای گرفتن حافظهٔ تازه، فضای آزادشده را دوباره استفاده کند. در مثال malloc و free، دو allocation متوالی ممکن است آدرس عددی یکسانی داشته باشند؛ هرچند این رفتار تضمینشده نیست. همچنین آزاد کردن حافظه الزاماً دادهٔ قبلی را پاک نمیکند و مقدار pointer را هم خودکار به NULL تغییر نمیدهد.
این وضعیت زمینهٔ ایجاد Dangling Pointer است: pointer همچنان آدرس شیئی را نگه میدارد که عمرش پایان یافته است. اگر شیء دیگری در همان محل قرار بگیرد، دسترسی از طریق pointer قدیمی میتواند دادهٔ شیء جدید را بخواند یا تغییر دهد. مثال متن، یک ساختار User است که پس از آزاد شدن، فضای آن برای کاربر دیگری استفاده میشود. خواندن نام و وضعیت مدیریتی از pointer قدیمی در این مثال میتواند به مشاهدهٔ دادهٔ کاربر جدید یا تصمیم نادرست در authorization منجر شود؛ نمونهای از Use-After-Free.
فهرست بخشهای پژوهش به موضوعاتی مانند تعامل session و کمبود حافظه، نشت آدرس و جعل ساختارهای داخلی PHP اشاره دارد. بااینحال، متن ارائهشده پیش از توضیح این مراحل قطع میشود و جزئیات آنها را نمیتوان از همین بخش نتیجه گرفت.




