首页
社区
课程
招聘
[技术专题]软件漏洞分析入门_2_初级栈溢出A_初识数组越界
发表于: 2007-12-13 10:27 58804

[技术专题]软件漏洞分析入门_2_初级栈溢出A_初识数组越界

2007-12-13 10:27
58804
收藏
免费 7
支持
分享
最新回复 (156)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
101
谢谢~学习了!
2008-3-7 22:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
102
学习了..很多都不理解
2008-3-8 14:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
103
好像很复杂。。。。
2008-3-9 00:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
104
调试环境:vc6.0
2008-3-22 15:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
105
拜一个···················
2008-3-25 17:14
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
106
学习了,期待下一章精彩的内容!!
2008-3-26 20:15
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
107
学习了。 为什么要 strcpy(buffer,password);
2008-3-28 19:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
108
谢谢楼主,非常适合我们菜鸟的水平
2008-4-11 02:00
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
109
简单易懂,谢谢了!我最近才看到看雪的,觉得确实比较好!
2008-4-11 02:40
0
雪    币: 249
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
110
#include <stdio.h>
#include <string.h>

#define PASSWORD "1234567"
int verify_password (char *password)
{
  char buffer[8];  //这里把buffer 和 authenticated定义的位置调下是否就不存在漏洞了呢?
  int authenticated;
  //char buffer[8];  // add local buff to be overflowed
  authenticated=strcmp(password,PASSWORD);
  strcpy(buffer,password);  //over flowed here!  
  return authenticated;
}
main()
{
  int valid_flag=0;
  char password[1024];
  while(1)
  {
    printf("please input password:");
    scanf("%s",password);
    valid_flag = verify_password(password);
    if(valid_flag)
    {
      printf("incorrect password!\n\n");
    }
    else
    {
      printf("Congratulation! You have passed the verification!\n");
      break;
    }
  }
}
2008-5-21 11:03
0
雪    币: 16
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
111
支持,为什么变量和数组的存放是
buffer[0-3]
buffer[4-7]
authenticated
而不是
authenticated
buffer[0-3]
buffer[4-7]
下面的这样就算溢出也不会得到正确的结果啊?
2008-5-23 02:46
0
雪    币: 249
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
112
[QUOTE=ZSYL;457059]支持,为什么变量和数组的存放是
buffer[0-3]
buffer[4-7]
authenticated
而不是
authenticated
buffer[0-3]
buffer[4-7]
下面的这样就算溢出也不会得到正确的结果啊?[/QUOTE]

因为定义的时候是先authenticated 然后buffer[],系统给变量开辟帧栈的时候是先进后出依次存放,所以先对authenticated压栈,然后对buuff[]压栈,而buffer[]分buffer[0-3]和buffer[4-7],windows系统中按搞地址向低地址存放,所以先对buffer[4-7]压栈,再对buffer[0-3]故而最终存放的是:
buffer[0-3]
buffer[4-7]
authenticated

//不知道我的理解是否正确,请各位大牛指教。
2008-5-23 20:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
113
我想你也许知道,因为这是常识,可能是你的大意了或者你的编译器可以包含默认的头文件,但是你没有在代码中#include <string.h>,呵呵,最近我学习bufferoverflow,正在看你的文章 ,写的真好,谢谢你~
2008-7-20 07:59
0
雪    币: 253
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
114
现在发现自己还是逆向技术不行啊
2008-8-27 19:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
115
支持了再学习~~~
2008-8-29 19:40
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
116
把几篇教程全部下载下来了,回去看了5篇文章了,今天特地来感谢的
支持看雪,支持failwest!
大家共同进步吧,呵呵!
2008-9-1 11:55
0
雪    币: 200
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
117
好像明白点了,继续学习!
2008-9-1 19:21
0
雪    币: 200
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
118
“扫盲课程”???
呵呵,很形象!
2008-9-1 19:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
119
刚开始学啊!加油看!
2009-1-20 10:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
120
学习了,感谢
2009-1-22 10:18
0
雪    币: 286
活跃值: (14)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
121
没想到这么经典,越来越喜欢看雪了,希望有一天也能练就一身好功夫,也不愧看雪提供如此好的学习环境,表示感谢。
2009-3-25 17:50
0
雪    币: 492
活跃值: (51)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
122
不错,不过这本书我已经看过了。
2009-3-26 16:05
0
雪    币: 222
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
123
我还没看完,,,
2009-3-28 20:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
124
膜拜膜拜膜拜
2009-3-29 02:54
0
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
125
用了12个字符才通过。。。dev 编译的。
2009-7-27 01:15
0
游客
登录 | 注册 方可回帖
返回
//