| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2083 人关注过本帖, 2 人收藏
标题:缓冲区 溢出 -- 高手们,你们在哪里?
取消只看楼主 加入收藏
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
结帖率:100%
收藏(2)
 问题点数:0 回复次数:3 
缓冲区 溢出 -- 高手们,你们在哪里?
code如下。

程序代码:
#include<stdio.h>
void why_here(void) /*this function has never been called*/
{
    printf("why u here ?!\n");
    _exit(0);
}
int main(int argc,char * argv[])
{
    int buff[1];
    buff[2]=(int)why_here;
    return 0;
}


很明显, why_here function没有被调用过,但是输出结果是被调用的。

谁来解释下为毛被调用。

[ 本帖最后由 Devil_W 于 2011-6-5 20:24 编辑 ]
搜索更多相关主题的帖子: 缓冲区 
2011-06-05 19:11
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用BlueGuy在2011-6-5 21:04:37的发言:

2b


蠢货。
2011-06-05 21:05
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
进入main 函数后的栈内容下:
[ eip ][ ebp ][ buff[0] ]
高地址<---- 低地址
以上3 个存储单元中eip 为main 函数的返回地址,buff[0]单元就是buff 申明的一个int
空间。程序中定义了int buff[1],那么只有对buff[0]的操作才是合理的(我们只申请
了一个int 空间),而我们的buff[2]=why_here 操作超出了buff 的空间,这个操作越界了,
也就是溢出了。溢出的后果是: 对buff[2]赋值其实就是覆盖了栈中的eip 存放单元的数
据,将main 函数的返回地址改为了why_here 函数的入口地址。这样main 函数结束后返回
的时候将这个地址作为了返回地址而加以运行。
2011-06-05 22:28
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用不分手的恋爱在2011-6-5 23:06:57的发言:

楼主,在耍帅,没有什么好耍的,就连我没学过多少c语言都还能知道,栈被你改写了



程序代码:
#include <stdio.h>
#include <stdlib.h>
int add(int x,int y)
{
    return x+y;
}
int mul(int x,int y)
{
    return x*y;
}
typedef int (* PF)(int,int);
int main(int argc,char *argv[])
{
    PF pf; 
    char buff[4]; 
    int t=0;
    pf=(PF) &mul; 
    printf("addr add fun : %p\n",&add);
    printf("addr mul fun : %p\n",&mul);
    printf("pf=0x%x\n",pf);
    if(argc >1)
    {
        memcpy(buff,argv[1],8);
    }
    printf("now pf=0x%x\n",pf);
    t=pf(4,8);
    printf("4*8=%i\n",t);
}


你来分析下,我这段代码是怎么修改stack的.
2011-06-05 23:27
快速回复:缓冲区 溢出 -- 高手们,你们在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019046 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved