您的位置:首页 > 编程语言

安全编程(二)终于搞懂了一点点为什么缓冲区溢出会带来严重后果

2008-09-01 22:41 363 查看
接上一个程序我添加了一个东西

void ceshi(const char * input)

{

char buf[10];

strcpy(buf,input); //有问题的语句

printf("我什么时候执行了,你猜到了吗?");

}

现在给出一个模型,答案应该知晓了。

/------------------\ lower

| | memory

| Text | addresses

| |

|------------------|

| (Initialized) |

| Data |

| (Uninitialized) |

|------------------|

| |

| Stack | higher

| | memory

\------------------/ addresses

Fig. 1 Process Memory Regions

bottom of top of

memory memory

buffer sfp ret *str

<------ [ ][ ][ ][ ]

top of bottom of

stack stack

这两个图形,第一个是程序执行是在内存中的模型

第二个是调用函数是 在堆栈中的模型。ret是调用函数的返回地址,

这篇文章一定要仔细的读一读《Smashing The Stack For Fun And Profit》

http://insecure.org/stf/smashstack.html

读完之后,就非常明白了,哈哈哈哈哈哈哈哈哈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: