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

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

arhat 活跃值
31
2006-10-28 19:48
20767
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 )
在线值:
发帖
回帖
粉丝
爱国人士 2006-10-28 22:54
2
0
非常感谢,正在研读中.
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aa1ss2 2 2006-10-29 09:00
3
0
感谢楼主的无私奉献~
雪    币: 625
活跃值: (1057)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xzchina 1 2006-10-29 09:23
4
0
楼主的这种精神是值得我们学习的!
雪    币: 625
活跃值: (1057)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xzchina 1 2006-10-29 09:30
5
0
在看到第一页的时候发现例子中的程序少了一个右括号
int main () {
   int array [5]={1,2,3,4,5};
   printf("%d\n",array[5];   <-少了一个右括号
}
雪    币: 296
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
XiaosanAiq 2006-10-29 20:34
6
0
坚决支持!
雪    币: 2108
活跃值: (208)
能力值: (RANK:1260 )
在线值:
发帖
回帖
粉丝
arhat 31 2006-10-30 08:42
7
0
最初由 xzchina 发布
在看到第一页的时候发现例子中的程序少了一个右括号
int main () {
int array [5]={1,2,3,4,5};
printf("%d\n",array[5]; <-少了一个右括号
}


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


foxit
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冷雨夜 2006-12-21 23:09
13
0
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!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
烟雨 2006-12-22 14:45
14
0
水平浅薄,未能里解,慢慢消化.谢谢分享
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
biibii 2006-12-29 17:06
15
0
调用函数的过程有点疑问?

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

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

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

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

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

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

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

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

........

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