Buffer overflow attacks:detect, exploit, prevent

副标题:无

作   者:(美)James C. Foster等著;蔡勉译

分类号:

ISBN:9787302139423

微信扫一扫,移动浏览光盘

简介

  对于缓冲区溢出,有三件事令我印象深刻:第一次成功地在Linux的imapd上利用一个缓冲区溢出;第一次在本地的Linux中独立发现和利用了缓冲区溢出;第一次通过编写缓冲区溢出成功进入别人的主机。   在读过Aleph1的关于缓冲区溢出的重要论文“Buffer overflows for fun and profit”后,大多数人想到的主要是由此带来的好处。因为精通编写缓冲区溢出程序的人在该行业任何一家大公司中做咨询师的年薪都可以达到9~12万美元。   但另一方面,许多人对获得这种技能有一个很大的误区,认为学会这种技能,就可以一劳永逸了。确实,在IT领域许多诀窍是可以学会的,一旦了解了这些诀窍,也就拥有这些诀窍了。但是编写缓冲区溢出程序却并不如此,从书本中或者速成班中可以学会基础知识,但是编程的环境总是在变化。一方面,黑客在不停地寻找新的方法来更好的利用漏洞,寻找发现新的漏洞方法;另一方面,微软公司每天都在给它的代码增加保护,如果3个月不写缓冲区溢出代码,原有的技巧也就过时了。编写缓冲区溢出中最难的就是要地根据不断变化的环境给出新对策。   用于编写溢出程序的工具也在不断变化着,以前编写溢出程序只需要一份Softice或GDB的拷贝,就可以由某个人单独完成。但是今天,即使是一个简单的缓冲区溢出,Immunity公司也会有相当大的投入。例如,需要有专门的调试器来查询、脚本化正在运行的程序;专门的编译器来创建和调整克服弱点所需求的shellcode;购买或产生用于专门解决各种不同问题的反向工程工具;用Python语言编写的完整的mySQL和SSL库。一个相对复杂的漏洞利用需要整个工作小组协调完成。

目录

第ⅰ部分 扩展缓冲区溢出.

第1章 缓冲区溢出的基本概念 3

1.1 简介 4

1.2 软件安全危机 4

1.3 缓冲区溢出的增加 8

1.4 exploits与缓冲区溢出 9

1.5 定义 11

1.5.1 硬件 11

1.5.2 软件 11

1.5.3 安全 15

1.6 小结 16

1.7 快速解决方案 16

1.8 网站链接 17

1.9 邮件清单 17

1.10 常见问题 18

第2章 理解shellcode 19

2.1 简介 20

2.2 shellcode概述 20

2.3 空字节问题 27

2.4 实现系统调用 28

.2.5 远程shellcode 30

2.5.1 端口绑定shellcode 30

2.5.2 套接字描述符重用shellcode 32

2.6 本地shellcode 33

2.6.1 execve shellcode 33

2.6.2 setuid shellcode 35

2.6.3 chroot shellcode 36

2.7 小结 41

2.8 快速解决方案 41

2.9 网站链接 42

2.10 邮件清单 42

2.11 常见问题 43

第3章 编写shellcode 45

3.1 简介 46

3.2 shellcode示例 46

3.2.1 write系统调用 49

3.2.2 execve shellcode 52

3.2.3 端口绑定shellcode 60

3.2.4 反向连接shellcode 70

3.2.5 套接口重用shellcode 73

3.2.6 重用文件描述符 75

3.2.7 shellcode编码 81

3.3 重用程序变量 86

3.3.1 公开的源程序 87

3.3.2 关闭的源程序 88

3.4 操作系统间的shellcode 90

3.5 理解已有的shellcode 91

3.6 小结 95

3.7 快速解决方案 95

3.8 网站链接 96

3.9 邮件清单 97

3.10 常见问题 97

第4章 win32汇编语言 99

4.1 简介 100

4.2 应用程序的内存布置 100

4.2.1 应用程序结构 102

4.2.2 内存分配—— 堆栈 103

4.2.3 内存分配—— 堆 103

4.3 windows汇编 104

4.3.1 寄存器 104

4.3.2 hello world 107

4.4 小结 109

4.5 快速解决方法 109

4.6 网站链接 110

4.7 常见问题 110

案例分析1.1 freebsd nn exploit代码 114

案例分析1.2 xlockmore用户提供的格式化字符串 118

案例分析1.3 使用winsock的frontpage的拒绝服务 122

案例分析1.4 freebsd上的curl缓冲区溢出 133

第ⅱ部分 缓冲区溢出解析

第5章 堆栈溢出 139

5.1 简介 140

5.2 intel x86结构和机器语言基础 141

5.2.1 寄存器 141

5.2.2 堆栈和程序调用 142

5.2.3 调用规则和堆栈结构 148

5.2.4 进程内存布局 156

5.3 堆栈溢出和它们的利用 157

5.3.1 简单的溢出 158

5.3.2 创建一个可利用的溢出的实例程序 162

5.3.3 执行exploit 164

5.4 什么是off-by-one 溢出? 174

5.5 寻找堆栈溢出的挑战 183

5.5.1 词汇分析 184

5.5.2 语义分析器 186

5.5.3 应用程序保护 187

5.5.4 openbsd 2.8 ftpd的off-by-one错误 187

5.5.5 apache htpasswd缓冲区溢出 188

5.6 小结 189

5.7 快速解决方案 191

5.8 网站链接 192

5.9 邮件清单 192

5.10 常见问题.. 192

第6章 堆腐烂 195

6.1 简介 196

6.2 简单堆腐烂 196

6.2.1 使用堆——malloc()、calloc()和realloc() 197

6.2.2 简单的堆和bss溢出 198

6.2.3 腐烂c++中的函数指针 200

6.3 高级堆腐烂—doug lea malloc 203

6.3.1 doug lea malloc概述 203

6.3.2 内存组织——边界标志、箱(bins)和场域(arenas) 204

6.3.3 free()算法 208

6.3.4 伪数据块 209

6.3.5 易受攻击程序示例 211

6.3.6 利用frontlink() 213

6.3.7 堆上的off-by-one和off-by-five 214

6.4 高级堆腐烂—— system v malloc 215

6.5 应用程序防御 225

6.6 小结 227

6.7 快速解决方案 228

6.7.1 简单堆腐烂 228

6.7.2 高级堆腐烂—— doug lea malloc 228

6.7.3 高级堆腐烂——system v malloc 228

6.7.4 应用程序防御 228

6.8 网站链接 229

6.9 常见问题 230

第7章 可移植的网络编程 231

7.1 简介 232

7.2 什么是格式化字符串 232

7.2.1 带有不定数量参数的c函数 232

7.2.2 省略和va_args 233

7.2.3 格式化输出的函数 235

7.3 使用格式化字符串 237

7.3.1 printf()例子 237

7.3.2 格式化符号和printf()参数 238

7.3.3 格式标识符的类型 239

7.4 误用格式化字符串 240

7.4.1 对坏的格式化字符串进行操作 242

7.4.2 拒绝服务 243

7.4.3 读取存储器 244

7.4.4 存储器写入 246

7.5 利用格式化字符串缺陷的挑战 251

7.5.1 寻找格式化字符串缺陷 251

7.5.2 覆盖什么 253

7.5.3 操作系统的差别 259

7.5.4 利用不同系统的困难 261

7.6 应用程序防御 261

7.7 小结 263

7.8 快速解决方案 264

7.9 网站链接 265

7.10 常见问题 265

第8章 windows缓冲区溢出 267

8.1 简介 268

8.1.1 背景 268

8.1.2 基本的堆栈溢出 268

8.1.3 编写windows shellcode 274

8.1.4 克服特殊的字符(例如空字节) 280

8.1.5 客户端服务器应用程序 285

8.1.6 使用/误用结构化异常处理器 295

8.2 小结 300

8.3 问题快速解决方案 301

8.4 网站链接 302

8.5 常见问题 302

案例分析2.1 linux中的curl缓冲区溢出 306

案例分析2.2 异常客户端密钥远程缓冲区溢出漏洞 311

案例分析2.3 x11r6 4.2 xlocaledir溢出 322

案例分析2.4 微软mdac拒绝服务漏洞 327

案例分析2.5 本地uux缓冲区在hpux上溢出 339

第ⅲ部分 查找缓冲区溢出

第9章 从源代码中找出缓冲区溢出 345

9.1 简介 346

9.2 源代码分析 346

9.3 免费开放源代码工具 348

9.3.1 application defence snapshot 348

9.3.2 rats 350

9.3.3 flawfinder 353

9.3.4 its4 359

9.4 application defense—— 企业开发版 359

9.5 secure software公司 363

9.5.1 结构和部署 364

9.5.2 缺陷知识库 364

9.5.3 使用codeassure 365

9.5.4 补救措施 371

9.6 ounce labs公司 371

9.6.1 prexis的自动化分析科学 372

9.6.2 prexis结构 372

9.6.3 prexis的运用 373

9.6.4 prexis的缺陷评估 374

9.7 fortify software公司 378

9.7.1 fortify源代码分析工具 379

9.7.2 使用源代码分析引擎 379

9.7.3 核查工作台 381

9.7.4 软件安全管理软件 384

9.8 小结 386

9.9 快速解决方案 386

9.10 网站链接 387

9.11 常见问题 388

案例分析3.1 inlineegg i 390

案例分析3.2 inlineegg ii 392

案例分析3.3 seti@home exploit 代码 395

案例分析3.4 微软公司codeblue exploit代码 402

附录a 完整的数据换算表 407

附录b 有用的系统调用函数... 408


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Buffer overflow attacks:detect, exploit, prevent
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon