首页
社区
课程
招聘
《The Shellcoder's handbook》第二章_栈溢出
发表于: 2006-10-28 19:48 21558

《The Shellcoder's handbook》第二章_栈溢出

arhat 活跃值
31
2006-10-28 19:48
21558

2       
栈溢出

从历史上看,栈溢出一直是最流行,也是最容易理解的安全问题之一。迄今为止,即使没有上百篇,至少也有几十篇文章讨论过流行的栈溢出技术,其中比较知名的可能是写于1996年的“Smashing the Stack for Fun and Profit。” Aleph One在这篇文章中第一次简洁明了的阐述了缓冲区溢出的原理,以及怎样利用它们。建议你读一下发表在Phrack杂志上的原文,在www.wiley.com/compbooks/koziol也可以找到这篇文章。
虽然Aleph One写了“Smashing the Stack for Fun and Profit”,但栈溢出并不是他发现的,在这篇文章发表的十年前或更长一段时间前,栈溢出及其利用方法已经四处流传了。从理论上讲,栈溢出是伴随C语言的出现而出现的,也是最公开的漏洞之一,但遗憾的是,在如今流行的软件中,仍然可以看到栈溢出的身影。不信?翻开你的安全新闻列表,应该还可以看到和本章描述类似的栈溢出漏洞。
。。。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
非常感谢,正在研读中.
2006-10-28 22:54
0
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
感谢楼主的无私奉献~
2006-10-29 09:00
0
雪    币: 615
活跃值: (1212)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
楼主的这种精神是值得我们学习的!
2006-10-29 09:23
0
雪    币: 615
活跃值: (1212)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
在看到第一页的时候发现例子中的程序少了一个右括号
int main () {
   int array [5]={1,2,3,4,5};
   printf("%d\n",array[5];   <-少了一个右括号
}
2006-10-29 09:30
0
雪    币: 296
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
坚决支持!
2006-10-29 20:34
0
雪    币: 2108
活跃值: (208)
能力值: (RANK:1260 )
在线值:
发帖
回帖
粉丝
7
最初由 xzchina 发布
在看到第一页的时候发现例子中的程序少了一个右括号
int main () {
int array [5]={1,2,3,4,5};
printf("%d\n",array[5]; <-少了一个右括号
}


感谢xzchina的细心!
2006-10-30 08:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主辛苦了!非常感谢!
2006-10-30 20:54
0
雪    币: 216
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
谢谢楼主了,总之加油吧
2006-10-31 23:17
0
雪    币: 2943
活跃值: (1788)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
10
支持共享,陆续推出来,这种方式好。
2006-11-1 06:28
0
雪    币: 215
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有什么好且精小的pdf浏览器吗?
2006-12-9 17:10
0
雪    币: 2108
活跃值: (208)
能力值: (RANK:1260 )
在线值:
发帖
回帖
粉丝
12
最初由 dongcan 发布
有什么好且精小的pdf浏览器吗?


foxit
2006-12-10 09:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
2.4的第一段代码中少了一个"{",
2.4.1的第二段代码中int main(int argc,char **argv[]).
2.4.1中attack程序中写的是Attempting address,而下面是Using address.

今天"艰难"的看到第二章,

还有怎么电子版也有几个版本吗?
我手头的这版怎么有点不一样?
比如2.4.1的:[log@0day local]$
在我手头的电子版上是:[jack@0day local]$

感谢arhat!
2006-12-21 23:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
水平浅薄,未能里解,慢慢消化.谢谢分享
2006-12-22 14:45
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
调用函数的过程有点疑问?

2.2.1中,有个地方这么写的:
    调用函数的整个过程是:首先是把function函数的参数a和b压入栈中,参数压入栈后,系统…………,然后调用函数。

就这里,这里和调用后的栈示意图好像不一致。

偶是新手~~ ^o^~
2006-12-29 17:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
回15楼

C语言里函数压栈是从右往左压的

所以依次压b,a ,返回地址,保存EBP值,然后是局部变量

而且 栈是从上往下生长的(这个图是这样)  从低地址到高地址

不知道说的对不对 我也是最近在学
2006-12-29 22:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢谢楼主,我一定要好好学习
2006-12-30 14:14
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
最初由 biibii 发布
调用函数的过程有点疑问?

2.2.1中,有个地方这么写的:
调用函数的整个过程是:首先是把function函数的参数a和b压入栈中,参数压入栈后,系统…………,然后调用函数。

........

图示是对的,个人觉得画得不清楚~
呵呵
2006-12-30 15:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xio
19
thanks for sharing
2007-1-6 12:11
0
雪    币: 457
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
下载一部分感谢一次
感谢楼主
2007-1-23 20:09
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
非常感谢,正在学习~
2007-2-7 12:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主的无私奉献.非常感谢
2007-2-22 19:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
学习中..............
2007-2-25 23:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
收藏,学习中
2007-3-16 01:43
0
游客
登录 | 注册 方可回帖
返回
//