PDA

View Full Version : Buffer overrun در Disassembler



saeedIRHA
دوشنبه 20 شهریور 1385, 06:05 صبح
سلام دوستان،
من یک کده اسیب پذیر به Buffer Overrun نوشتم،و اون رو با GCC تحت Windows کمپایل کردم،
با وارد کردن 4+268 Junk تا یعنی با 272 کاراکتر میشه EIP رو overwrite کرد



#include <windows.h>
#include <string.h>

int main(int argc,char *argv[])
{
char buf[256];

strcpy(buf,argv[1]);
printf("You Entered: %s\n",buf);

return EXIT_SUCCESS;
}




حالا قرض:
داشتم کده اسیب پذیر رو Disassemble میکردم دیدم که براش 296 بایت Allocate شده
همون طور که تو عکس زیر میبینید،
حالا میخواستم دلیلشو از دوستان بپرسم؟؟؟؟
ممنون.

Inprise
سه شنبه 21 شهریور 1385, 14:19 عصر
این مسئله به Stack Management کامپایلر مربوط هست . ویژوال سی 6 برای کد مانند کد تو 320 بایت روی استک در نظر میگیره و نسخه 7.1 اش با پیکره بندی پیش فرض 264 ( با فعال بودن Gc و فعال بودن SEH ) و بدون فعال بودن هر دوی این قابلیتها باز 320 بایت و ...