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

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

yinx



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

5come5帮你背单词 [ sprinkle /spriŋkl/ vt. 洒水,喷淋 ]


一个小小的溢出实验

程序如下:
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 | [楼 主]
    coolboy





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

    5come5帮你背单词 [ waist /weist/ n. 腰部,腰 ]


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

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