《安全编程修炼之道》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)James C. Foster,(美)Mike Price著;邓劲生译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:730213216X
  • 页数:629 页
图书介绍:本书内容包括:安全编码基础、套接字、可移植的网络编程、编写安全组件、创建Web安全工具等。

第1章 安全编码基础 1

1.1 引言 2

1.2 C/C++ 3

1.2.1 语言特性 3

1.2.2 Hello,World!实例 4

1.2.3 数据类型 5

1.2.4 流程控制 7

1.2.5 函数 8

1.2.6 类 9

1.2.7 案例研究:傅立叶系数估算 10

1.3 Java 13

1.3.1 语言特性 14

1.3.2 Hello,World!实例 15

1.3.3 数据类型 15

1.3.4 流程控制 16

1.3.6 类 18

1.3.5 方法 18

1.3.7 获取HTTP报头 20

1.4 C# 21

1.4.1 移植到C#平台的商业案例 21

1.4.2 语言特性 22

1.4.3 Hello,World!实例 23

1.4.4 数据类型 23

1.4.5 流程控制 25

1.4.7 类 26

1.4.6 方法 26

1.4.8 C#线程 28

1.4.9 案例研究:命令行IP地址解析 29

1.5 Perl 38

1.5.1 数据类型 39

1.5.2 运算符 40

1.5.3 Perl脚本实例 42

1.5.4 专用变量 44

1.5.5 模式匹配和替换 44

1.5.7 常用的Perl工具 45

1.5.6 正则表达式修饰符 45

1.5.8 I Am a Perl Coder! 46

1.5.9 日志修改工具 47

1.6 Python 52

1.7 本章小结 56

1.8 要点回顾 56

1.9 相关网站链接 57

1.10 常见问题 58

第2章 NASL脚本 61

2.1 引言 62

2.1.1 NASL的发展史 62

2.1.2 NASL的目标 62

2.2 NASL脚本的语法 63

2.2.1 注释 64

2.2.2 变量 64

2.2.3 运算符 66

2.2.4 控制结构 69

2.3 编写NASL脚本 72

2.3.1 编写NASL个人专用工具 73

2.3.2 Nessus框架下的编程 75

2.4 案例研究:经典的NASL脚本 77

2.5 NASL代码移植 81

2.6 本章小结 90

2.7 要点回顾 91

2.8 相关网站链接 92

2.9 常见问题 92

第3章 BSD套接字 95

3.2 BSD套接字编程简介 96

3.1 引言 96

3.3 TCP客户端与服务器 97

3.4 UDP客户端与服务器 103

3.5 套接字选项 111

3.6 基于UDP套接字的网络扫描 113

3.7 基于TCP套接字的网络扫描 122

3.8 线程与并行 134

3.9 本章小结 136

3.10 要点回顾 136

3.12 常见问题 137

3.11 相关网站链接 137

第4章 Windows套接字 139

4.1 引言 140

4.2 Winsock概述 140

4.3 Winsock 2.0 141

4.3.1 通过Visual Studio 6.0链接 142

4.3.2 通过源代码链接 143

4.4 案例研究:使用WinSock抓取网页 146

4.5 编写客户端程序 147

4.6 编写服务器程序 151

4.7 编写exploit及漏洞检测程序 155

4.8 本章小结 163

4.9 要点回顾 164

4.10 常见问题 165

4.11 案例研究:使用Winsock执行Web攻击 166

4.12 案例研究:使用Winsock执行远程缓冲区溢出 168

第5章 Java套接字 173

5.2 TCP/IP概述 174

5.1 引言 174

5.2.1 TCP客户端 175

5.2.2 IP地址及域名解析 178

5.2.3 基于文本的输入/输出:LineNumberReader类 181

5.2.4 TCP服务器 185

5.2.5 使用浏览器连接TCPServer1 189

5.2.6 处理多重连接 189

5.2.7 WormCatcher 198

5.3 UDP客户端与服务器 204

5.4 本章小结 211

5.5 要点回顾 211

5.5.1 TCP客户端 211

5.5.2 TCP服务器 211

5.5.3 UDP客户端与服务器 211

5.6 常见问题 212

第6章 编写可移植的代码 215

6.2 UNIX和Windows移植指南 216

6.2.1 预编译指令 216

6.1 引言 216

6.2.2 确定操作系统 218

6.2.3 进程的创建和终止 222

6.2.4 多线程 227

6.2.5 信号 234

6.2.6 文件操作 236

6.2.7 目录操作 239

6.2.8 库 242

6.2.9 Daemon/Win32服务编程 247

6.2.10 内存管理 254

6.2.11 命令行参数处理 255

6.2.12 整型数据类型 259

6.3 本章小结 260

6.4 要点回顾 260

6.5 常见问题 261

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

7.1 引言 264

7.2 BSD套接字和Winsock 264

7.3.1 返回值 266

7.3 可移植的构件 266

7.3.2 扩展错误信息 268

7.3.3 API 270

7.3.4 原始套接字 302

7.3.5 Pcap和WinPcap 313

7.4 本章小结 319

7.5 要点回顾 319

7.6 常见问题 319

第8章 编写shellcode Ⅰ 323

8.2.1 工具 324

8.1 引言 324

8.2 shellcode概述 324

8.2.2 汇编程序设计语言 325

8.2.3 Windows和UNIX的汇编比较 328

8.3 寻址问题 329

8.3.1 方案一:使用call和jmp指令 329

8.3.2 方案二:将参数值入栈 330

8.4 NULL字节问题 331

8.5.2 系统调用参数 332

8.5 系统调用的实现 332

8.5.1 系统调用编号 332

8.5.3 系统调用返回值 334

8.6 远程shellcode 334

8.6.1 端口绑定shellcode 334

8.6.2 套接字描述符重用shellcode 336

8.7 本地shellcode 337

8.7.1 execve shellcode 338

8.7.2 setuid shellcode 339

8.7.3 chroot shellcode 340

8.7.4 Windows shellcode 344

8.8 本章小结 350

8.9 要点回顾 350

8.10 相关网站链接 352

8.11 邮件列表 352

8.12 常见问题 352

第9章 编写shellcode Ⅱ 355

9.2 shellcode实例 356

9.1 引言 356

9.2.1 write系统调用 359

9.2.2 execve shellcode 362

9.2.3 端口绑定shellcode 370

9.2.4 socket系统调用 373

9.2.5 bind系统调用 374

9.2.6 listen系统调用 374

9.2.7 accept系统调用 375

9.2.8 dup2系统调用 375

9.2.9 execve系统调用 376

9.2.10 反向连接shellcode 381

9.2.11 重用套接字的shellcode 384

9.2.12 重用文件描述符 386

9.2.13 shellcode编码 392

9.3 重用程序变量 397

9.4 跨操作系统的shellcode 401

9.5 了解现有的shellcode 402

9.7 要点回顾 406

9.6 本章小结 406

9.8 相关网站链接 407

9.9 邮件列表 407

9.10 常见问题 407

第10章 开发exploit程序Ⅰ 409

10.1 引言 410

10.2 定位漏洞 410

10.3 远程与本地exploit程序的编写 411

10.4.1 格式化字符串 412

10.4 格式化字符串攻击 412

10.4.2 格式化字符串漏洞的修复 414

10.5 案例研究:xlockmore用户提供的格式化字符串漏洞CVE-2000-0763 414

10.6 TCP/IP漏洞 417

10.7 竞争条件 418

10.7.1 文件竞争条件 418

10.7.2 信号竞争条件 419

10.8 案例研究:man输入验证错误 419

10.9 本章小结 421

10.10 要点回顾 422

10.11 相关网站链接 423

10.12 常见问题 423

第11章 开发exploit程序Ⅱ 425

11.1 引言 426

11.2 为exploit编写套接字和绑定 426

11.2.1 客户端套接字编程 426

11.2.2 服务器端套接字编程 428

11.3 栈溢出exploits 429

11.3.1 内存的组织 430

11.3.2 栈溢出 431

11.3.3 寻找开源软件中可利用的栈溢出 435

11.4 案例研究:X11R6 4.2XLOCALEDIR溢出 435

11.5 堆破坏exploits 440

11.6 案例研究:OpenSSL SSLv2畸形客户端密钥远程缓冲区溢出漏洞CAN-2002-0656 444

11.7 整型bug exploits 457

11.7.1 整数环绕 458

11.7.2 忽略大小检查 460

11.8 案例研究:OpenSSH质询响应整型溢出漏洞CVE-2002-0639 462

11.7.3 其他整型bug 462

11.9 案例研究:UWPOP2缓冲区溢出漏洞CVE-1999-0920 466

11.10 本章小结 474

11.11 要点回顾 475

11.12 相关网站链接 476

11.13 常见问题 476

第12章 开发exploit程序Ⅲ 479

12.2 MSF的使用 480

12.1 引言 480

12.3 用Metasploit进行exploit开发 485

12.3.1 确定攻击向量 485

12.3.2 计算偏移量 486

12.3.3 选择控制向量 491

12.3.4 发现返回地址 495

12.3.5 使用返回地址 498

12.3.6 确定坏字符 500

12.3.7 确定空间限制 500

12.3.8 空操作指令拖动器 502

12.3.9 选取有效载荷和编码器 503

12.4 将exploit集成到MSF中 511

12.4.1 框架 511

12.4.2 分析一个现有的exploit模块 512

12.4.3 覆盖方法 516

12.5 本章小结 517

12.6 要点回顾 517

12.7 相关网站链接 518

12.8 常见问题 518

第13 章编写安全组件 521

13.1 引言 522

13.2 COM 522

13.2.1 COM对象 522

13.2.2 COM接口 522

13.2.3 COM运行时 523

13.2.4 COM对象的实现 524

13.2.5 COM进程内服务器的实现 526

13.3 ATL 527

13.3.2 ATL客户端技术 528

13.3.1 C++模板 528

13.3.3 ATL服务器技术 531

13.3.4 ATL属性 543

13.4 将COM扩展添加到RPCDump工具中 547

13.4.1 COM EXE服务器实现 548

13.4.2 控制流 551

13.4.3 应用程序集成例程 552

13.4.4 工具接口定义 555

13.4.5 组件类 557

13.4.6 应用程序集成:COMSupport.h 563

13.4.7 应用程序集成:RPCDump.C 564

13.5 本章小结 566

13.6 要点回顾 566

13.7 相关网站链接 567

13.8 常见问题 567

第14章 创建Web安全工具 571

14.2 设计 572

14.2.1 攻击签名格式 572

14.1 引言 572

14.2.2 签名 573

14.3 深入分析 573

14.3.1 套接字和执行 573

14.3.2 解析器 583

14.3.3 头文件 595

14.3.4 编译 599

14.3.5 执行 599

14.5 本章小结 600

14.4 工具输出 600

14.6 要点回顾 601

14.7 相关网站链接 601

14.8 常见问题 601

附录A 词汇 605

附录B 安全工具汇编 613

附录C exploit文档 619

附录D 系统调用参考 621

附录E 数据转换参考 625