图书介绍
黑客攻防技术宝典 系统实战篇PDF|Epub|txt|kindle电子书版本网盘下载
![黑客攻防技术宝典 系统实战篇](https://www.shukui.net/cover/42/33238154.jpg)
- (英)ChrisAnley,(英)JohnHeasman,(美)GerardoRicharte等著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115217967
- 出版时间:2010
- 标注页数:545页
- 文件大小:34MB
- 文件页数:560页
- 主题词:计算机网络-安全技术
PDF下载
下载说明
黑客攻防技术宝典 系统实战篇PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 破解入门:x86上的Linux第1章 写在前面2
1.1 基本概念2
1.1.1 内存管理3
1.1.2 汇编语言4
1.2 识别汇编指令里的C和C++代码5
1.3 小结7
第2章 栈溢出8
2.1 缓冲区8
2.2 栈10
2.3 栈上的缓冲区溢出13
2.4 有趣的转换17
2.5 利用漏洞获得根特权20
2.5.1 地址问题21
2.5.2 NOP法26
2.6 战胜不可执行栈28
2.7 小结31
第3章 shellcode32
3.1 理解系统调用32
3.2 为exit()系统调用写shellcode34
3.3 可注入的shellcode37
3.4 派生shell39
3.5 小结46
第4章 格式化串漏洞47
4.1 储备知识47
4.2 什么是格式化串47
4.3 什么是格式化串漏洞49
4.4 利用格式化串漏洞52
4.4.1 使服务崩溃53
4.4.2 信息泄露54
4.5 控制程序执行59
4.6 为什么会这样67
4.7 格式化串技术概述67
4.8 小结69
第5章 堆溢出70
5.1 堆是什么70
5.2 发现堆溢出71
5.2.1 基本堆溢出72
5.2.2 中级堆溢出77
5.2.3 高级堆溢出83
5.3 小结84
第二部分 其他平台:Windows、Solaris、OS X和Cisco第6章 Windows操作系统86
6.1 Windows和Linux有何不同86
6.2 堆88
6.3 DCOM、DCE-RPC的优缺点90
6.3.1 侦察91
6.3.2 破解93
6.3.3 令牌及其冒用93
6.3.4 Win32平台的异常处理95
6.4 调试Windows96
6.4.1 Win32里的bug96
6.4.2 编写Windows shellcode97
6.4.3 Win32 API黑客指南97
6.4.4 黑客眼中的Windows98
6.5 小结99
第7章 Windows shellcode100
7.1 句法和过滤器100
7.2 创建101
7.2.1 剖析PEB102
7.2.2 分析Heapoverflow.c102
7.3 利用Windows异常处理进行搜索116
7.4 弹出shell121
7.5 为什么不应该在Windows上弹出shell122
7.6 小结122
第8章 Windows溢出123
8.1 栈缓冲区溢出123
8.2 基于帧的异常处理程序123
8.3 滥用Windows 2003 Server上的基于帧的异常处理127
8.3.1 滥用已有的处理程序128
8.3.2 在与模块不相关的地址里寻找代码段,从而返回缓冲区129
8.3.3 在没有Load Configuration Directory的模块的地址空间里寻找代码段130
8.3.4 关于改写帧处理程序的最后说明131
8.4 栈保护与Windows 2003 Server131
8.5 堆缓冲区溢出136
8.6 进程堆136
8.6.1 动态堆136
8.6.2 与堆共舞136
8.6.3 堆是如何工作的137
8.7 破解堆溢出140
8.7.1 改写PEB里指向RtlEnter CriticalSection的指针140
8.7.2 改写指向未处理异常过滤器的指针146
8.7.3 修复堆152
8.7.4 堆溢出的其他问题154
8.7.5 有关堆的总结154
8.8 其他的溢出154
8.8.1 .data区段溢出154
8.8.2 TEB/PEB溢出156
8.9 破解缓冲区溢出和不可执行栈156
8.10 小结161
第9章 战胜过滤器162
9.1 为仅接受字母和数字的过滤器写破解代码162
9.2 为使用Unicode的过滤器写破解代码165
9.2.1 什么是Unicode165
9.2.2 从ASCII转为Unicode166
9.3 破解Unicode漏洞166
9.4 百叶窗法168
9.5 译码器和译码171
9.5.1 译码器的代码172
9.5.2 在缓冲区地址上定位173
9.6 小结174
第10章 Solaris破解入门175
10.1 SPARC体系结构介绍175
10.1.1 寄存器和寄存器窗口176
10.1.2 延迟槽177
10.1.3 合成指令177
10.2 Solaris/SPARC shellcode基础178
10.2.1 自定位和SPARC shellcode178
10.2.2 简单的SPARC exec shellcode178
10.2.3 Solaris里有用的系统调用179
10.2.4 NOP和填充指令180
10.3 Solaris/SPARC栈帧介绍180
10.4 栈溢出的方法180
10.4.1 任意大小的溢出180
10.4.2 寄存器窗口和栈溢出的复杂性181
10.4.3 其他复杂的因素181
10.4.4 可能的解决方法181
10.4.5 off-by-one栈溢出漏洞182
10.4.6 shellcode的位置182
10.5 栈溢出破解实战183
10.5.1 脆弱的程序183
10.5.2 破解代码184
10.6 Solaris/SPARC上的堆溢出187
10.6.1 Solaris System V堆介绍188
10.6.2 堆的树状结构188
10.7 基本的破解方法(t_delete)209
10.7.1 标准堆溢出的限制210
10.7.2 改写的目标211
10.8 其他与堆相关的漏洞213
10.8.1 off-by-one溢出213
10.8.2 二次释放漏洞214
10.8.3 任意释放漏洞214
10.9 堆溢出的例子214
10.10 破解Solaris的其他方法218
10.10.1 静态数据溢出218
10.10.2 绕过不可执行栈保护218
10.11 小结219
第11章 高级Solaris破解220
11.1 单步执行动态链接程序221
11.2 Solaris SPARC堆溢出的各种技巧235
11.3 高级Solaris/SPARC shellcode236
11.4 小结248
第12章 OS X shellcode249
12.1 OS X就是BSD吗249
12.2 OS X是否开源250
12.3 UNIX支持的OS X250
12.4 OS X PowerPC shellcode251
12.5 OS X Intel shellcode257
12.5.1 shellcode实例258
12.5.2 ret2libc259
12.5.3 ret2str(1)cpy261
12.6 OS X跨平台shellcode263
12.7 OS X堆利用264
12.8 在OS X中寻找bug266
12.9 一些有趣的bug266
12.10 关于OS X破解的必读资料267
12.11 小结268
第13章 思科IOS破解技术269
13.1 思科IOS纵览269
13.1.1 硬件平台269
13.1.2 软件包270
13.1.3 IOS系统架构271
13.2 思科IOS里的漏洞274
13.2.1 协议剖析代码274
13.2.2 路由器上的服务274
13.2.3 安全特征274
13.2.4 命令行接口275
13.3 逆向分析IOS275
13.3.1 仔细剖析映像275
13.3.2 比较IOS映像文件276
13.3.3 运行时分析277
13.4 破解思科IOS281
13.4.1 栈溢出282
13.4.2 堆溢出283
13.4.3 shellcode286
13.5 小结294
第14章 保护机制295
14.1 保护295
14.1.1 不可执行栈296
14.1.2 W^X内存299
14.1.3 栈数据保护304
14.1.4 AAAS309
14.1.5 ASLR310
14.1.6 堆保护312
14.1.7 Windows SEH保护机制318
14.1.8 其他保护机制321
14.2 不同实现之间的差异322
14.2.1 Windows322
14.2.2 Linux325
14.2.3 OpenBSD327
14.2.4 Mac OS X328
14.2.5 Solaris329
14.3 小结330
第三部分 漏洞发现332
第15章 建立工作环境332
15.1 需要什么样的参考资料332
15.2 用什么编程333
15.2.1 gcc333
15.2.2 gdb333
15.2.3 NASM333
15.2.4 WinDbg333
15.2.5 OllyDbg333
15.2.6 Visual C++334
15.2.7 Python334
15.3 研究时需要什么334
15.3.1 有用的定制脚本/工具334
15.3.2 所有的平台335
15.3.3 UNIX336
15.3.4 Windows336
15.4 需要学习的资料337
15.5 优化shellcode开发339
15.5.1 计划339
15.5.2 用内联汇编写shellcode340
15.5.3 维护shellcode库341
15.5.4 持续运行341
15.5.5 使破解程序稳定可靠342
15.5.6 窃取连接343
15.6 小结343
第16章 故障注入344
16.1 设计概要345
16.1.1 生成输入数据345
16.1.2 故障注入347
16.1.3 修正引擎347
16.1.4 提交故障351
16.1.5 Nagel算法351
16.1.6 时序351
16.1.7 试探法351
16.1.8 无状态协议与基于状态的协议352
16.2 故障监视352
16.2.1 使用调试器352
16.2.2 FaultMon352
16.3 汇总353
16.4 小结354
第17章 模糊测试的艺术355
17.1 模糊测试理论355
17.1.1 静态分析与模糊测试359
17.1.2 可扩缩的模糊测试359
17.2 模糊测试法的缺点360
17.3 建立任意的网络协议模型361
17.4 其他可能的模糊测试法362
17.4.1 位翻转362
17.4.2 修改开源程序362
17.4.3 带动态分析的模糊测试362
17.5 SPIKE363
1 7.5.1 什么是SPIKE363
17.5.2 为什么用SPIKE数据结构模仿网络协议364
17.6 其他的模糊测试工具371
17.7 小结371
第18章 源码审计:在基于C的语言里寻找漏洞372
1 8.1 工具373
18.1.1 Cscope373
18.1.2 Ctags373
18.1.3 编辑器373
18.1.4 Cbrowser373
18.2 自动源码分析工具374
18.3 方法论374
18.3.1 自顶向下(明确的)的方法374
18.3.2 自底向上的方法375
18.3.3 结合法375
18.4 漏洞分类375
18.4.1 普通逻辑错误375
18.4.2 (几乎)绝迹的错误分类375
18.4.3 格式化串376
18.4.4 错误的边界检查377
18.4.5 循环结构378
18.4.6 off-by-one漏洞378
18.4.7 非正确终止问题379
18.4.8 跳过以'\0'结尾问题380
18.4.9 有符号数比较漏洞381
18.4.10 整数相关漏洞382
18.4.11 不同大小的整数转换383
18.4.12 二次释放错误384
18.4.13 超出范围的内存使用漏洞384
18.4.14 使用未初始化的变量384
18.4.15 释放后再使用漏洞385
18.4.16 多线程问题和重入安全代码386
18.5 超越识别:真正的漏洞和错误386
18.6 小结386
第19章 手工的方法387
19.1 原则387
19.2 Oracle extproc溢出387
19.3 普通的体系架构故障390
19.3.1 问题发生在边界390
19.3.2 在数据转换时出现问题391
19.3.3 不对称区域里的问题393
19.3.4 当认证和授权混淆的时候出现问题393
19.3.5 在最显眼的地方存在的问题393
19.4 绕过输入验证和攻击检测394
19.4.1 剥离坏数据394
19.4.2 使用交替编码394
19.4.3 使用文件处理特征395
19.4.4 避开攻击特征397
19.4.5 击败长度限制397
19.5 Windows 2000 SNMP DOS399
19.6 发现DOS攻击399
19.7 SQL-UDP400
19.8 小结400
第20章 跟踪漏洞402
20.1 概述402
20.1.1 脆弱的程序403
20.1.2 组件设计404
20.1.3 编译VulnTrace411
20.1.4 使用VulnTrace416
20.1.5 高级的技术418
20.2 小结419
第21章 二进制审计:剖析不公开源码的软件421
21.1 二进制与源码审计之间的明显差异421
21.2 IDA pro——商业工具422
21.2.1 IDA特征简介422
21.2.2 调试符号423
2.1.3 二进制审计入门423
21.3.1 栈帧423
21.3.2 调用约定424
21.3.3 编译器生成的代码425
21.3.4 类似memcpy代码构造428
21.3.5 类似stlen的代码构造429
21.3.6 C十十代码构造429
21.3.7 this指针429
21.4 重构类定义430
21.4.1 vtables430
21.4.2 快速且有用的花絮431
21.5 手动二进制分析431
21.5.1 快速检查函数库调用431
21.5.2 可疑的循环和写指令431
21.5.3 高层理解和逻辑错误432
21.5.4 二进制的图形化分析432
21.5.5 手动反编译433
21.6 二进制漏洞例子433
21.6.1 微软SQL Server错误433
21.6.2 LSD的RPC-DCOM漏洞434
21.6.3 IIS WebDav漏洞434
21.7 小结436
第四部分 高级内容438
第22章 其他载荷策略438
22.1 修改程序438
22.2 SQL Server 3B补丁439
22.3 MySQL 1位补丁442
22.4 OpenSSH RSA认证补丁443
22.5 其他运行时修补方法444
22.6 上载和运行(或proglet服务器)446
22.7 系统调用代理446
22.8 系统调用代理的问题448
22.9 小结456
第23章 编写在实际环境中运行的代码457
23.1 不可靠的因素457
23.1.1 魔术数字457
23.1.2 版本458
23.1.3 shellcode问题458
23.2 对策459
23.2.1 准备460
23.2.2 暴力破解460
23.2.3 本地破解461
23.2.4 OS/应用程序指纹461
23.2.5 信息泄露463
2.3.3 小结463
第24章 攻击数据库软件464
24.1 网络层攻击464
24.2 应用层攻击474
24.3 运行操作系统命令475
24.3.1 微软SQL Server475
24.3.2 Oracle475
24.3.3 IBM DB2476
24.4 SQL层的多种利用方法478
24.5 小结480
第25章 UNIX内核溢出481
25.1 内核漏洞类型481
25.2 Oday内核漏洞489
25.2.1 OpenBSD exec_ibcs2_coff_prep_zmagic()栈溢出489
25.2.2 漏洞490
25.3 Solaris vfs_getvfssw()可加载内核模块遍历漏洞494
25.3.1 sysfs()系统调用495
25.3.2 mount()系统调用496
25.4 小结497
第26章 破解UNIX内核漏洞498
26.1 exec_ibcs2_coff_prep_zmagic()漏洞498
26.1.1 计算偏移量和断点503
26.1.2 改写返回地址并重定向执行流程505
26.1.3 查找进程描述符(或进程结构)506
26.1.4 开发内核模式载荷508
26.1.5 从内核载荷返回509
26.1.6 得到根权限(uid=0)514
26.2 Solaris vfs_getvfssw()可加载内核模块路径遍历破解520
26.2.1 精心编写破解代码521
26.2.2 加载内核模块522
26.2.3 得到根权限(uid=0)525
26.3 小结526
第27章 破解Windows内核527
27.1 Windows内核模式缺陷——逐渐增多的猎物527
27.2 Windows内核介绍528
27.3 常见内核模式编程缺陷528
27.3.1 栈溢出529
27.3.2 堆溢出532
27.3.3 没有充分验证用户模式地址532
27.3.4 多目的化攻击533
27.3.5 共享的对象攻击533
27.4 Windows系统调用533
27.4.1 理解系统调用534
27.4.2 攻击系统调用535
27.5 与设备驱动程序通信536
27.5.1 IOCTL组件536
27.5.2 发现1OCTL处理程序中的缺陷537
27.6 内核模式载荷538
27.6.1 提升用户模式进程538
27.6.2 运行任意的用户模式载荷540
27.6.3 颠覆内核安全543
27.6.4 安装rootkit544
27.7 内核shellcoder的必读资料544
27.8 小结545