我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 一个小小的溢出实验 隐藏签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ family /'fæmili/ n. 家,家庭,家族,氏族,(尤指动植物的)系,族,科 ]


一个小小的溢出实验

程序如下:
Copy code
#include <stdio.h>
#include <windows.h>

void poor()
{
  printf("poor!\n");
}

void rich()
{
  printf("rich!\n");
  ExitProcess(0);
}

void judge()
{
  char want[10];                       //局部变量为一字符数组,溢了它!
  freopen("test.dat","r",stdin);
  scanf("%s",want);
}

int main(int argc, char* argv[])
{
 
  judge();
  poor();

  return 0;
}


按照这个程序的流程,本来是只能输出"poor"的.
"test.dat"里的最后四个字符其实是" 80 10 40 00",也即是rich()子过程的地址.
这个地址覆盖了"judge"返回时的EIP。


[ 此贴被yinx在2007-06-03 14:31重新编辑 ]
远程图片:未命名.JPG 附件: Debug.rar (33 K) 下载次数:6

描述:参考资料
附件: 【原创】既然是软件安全论坛,贴点这种东西不跑题吧——漏洞利用学习笔记之一:栈溢出 - 看雪软件安全论坛.rar (159 K) 下载次数:11

本帖最近评分记录:
  • 浮云:10 (by est) | 理由: 原创内容

  • 自强不息!
    顶端 Posted: 2007-06-03 14:19 | [楼 主]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ anonymous /ə'noniməs/ a. 匿名的,无名的 ]


    我忽然想到了一件事:
    是不是只要成功地溢出了局部变量并写入EIP就可以劫持那个程序?
    溢出局部变量是不是很容易办到?

    求达人解答

    自强不息!
    顶端 Posted: 2007-06-03 14:36 | [1 楼]
    disneycheng



    性别: 帅哥 状态: 该用户目前不在线
    头衔: Piano Prince
    等级: 荣誉会员
    发贴: 1971
    威望: 1
    浮云: 413
    在线等级:
    注册时间: 2005-12-16
    最后登陆: 2008-06-29

    5come5帮你背单词 [ limited /'limitid/ a. 小的,有限的 ]


    楼主。。。唉。。。不要发这种帖了,没意思。。。
    Disney
    顶端 Posted: 2007-06-04 00:23 | [2 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ scold /skəuld/ v. 责骂,申斥 ]


    好的,我不在程序员之家发了.

    自强不息!
    顶端 Posted: 2007-06-04 12:07 | [3 楼]
    coolboy





    性别: 保密 状态: 该用户目前不在线
    等级: 品行端正
    发贴: 252
    威望: 0
    浮云: 1107
    在线等级:
    注册时间: 2005-10-02
    最后登陆: 2016-04-25

    5come5帮你背单词 [ temperature /'tempəritə/ n. 温度 ]


    没那么容易溢出,现在编译器都能够检测,而且这跟环境相关,比如你的程序在我的机器上并没有溢出,我的机器上rich的入口并不是00401080。
    顶端 Posted: 2007-06-04 15:23 | [4 楼]
    kaby





    性别: 帅哥 状态: 该用户目前不在线
    头衔: 又好又强大
    等级: 荣誉会员
    家族: 八宝推倒委员会
    发贴: 3360
    威望: 0
    浮云: 584
    在线等级:
    注册时间: 2003-09-24
    最后登陆: 2015-03-28

    5come5帮你背单词 [ proclaim /prə'kleim/ vt. 宣布,声明,表明 ]


    phrack复刊了

    C恐怕不行吧,代码没有合理的边界检测还是铁定要溢出的。

    顶端 Posted: 2007-06-05 15:33 | [5 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.008917(s) query 5, Time now is:11-23 13:14, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号