安全编程(二)终于搞懂了一点点为什么缓冲区溢出会带来严重后果
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
读完之后,就非常明白了,哈哈哈哈哈哈哈哈哈
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
读完之后,就非常明白了,哈哈哈哈哈哈哈哈哈
相关文章推荐
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出(防止如今最常见的程序缺陷)
- 安全编程: 防止缓冲区溢出
- 一条TRUNCATE命令所带来的严重后果
- iPhone安全防线遭突破?后果严重还是媒体夸张?
- 多余的一句话带来的严重后果!!!
- Unix系统编程第一章:缓冲区溢出的后果
- 安全编程-缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出--防止如今最常见的程序缺陷
- Struts2漏洞为互联网带来严重安全风险
- 安全编程: 防止缓冲区溢出
- 为什么年事已高的我还在编程?
- NTLM 网络安全认证编程实现(VC)
- 穆利堂---为什么那么多人想买房子?背后真正的原因是我们国家没有‘安全的住所’
- 安全编程-异常处理
- 编程之中由整形提升带来的错误
- 微软2013编程之美“传话游戏”Runtime Error,为什么?