《CTF那些事儿》李舟军 主编 | PDF下载|ePub下载
CTF那些事儿 版权信息
- 出版社:机械工业出版社
- 出版时间:2023-08-01
- ISBN:9787111729914
- 条形码:9787111729914 ; 978-7-111-72991-4
CTF那些事儿 本书特色
本书由北航Lancet战队核心成员倾力编写,根据多年来的CTF竞赛和培训经验,总结了全新的CTF知识学习框架,按照安全杂项、隐写术、密码学、Web渗透、软件逆向工程、二进制程序漏洞利用(PWN)、工业控制系统安全的顺序安排章节内容,每章中附有大量案例和实操练习。任何网络安全初学者都可以对照书中的讲解,系统学习CTF相关的知识并进行实践,熟练掌握相关的技术、工具和比赛技巧。本书适合作为CTF竞赛参赛者的训练教材和培训材料,也适合作为网络安全技术人员培训教程或技术参考书。
CTF那些事儿 内容简介
本书创新性的提出新的CTF知识学习框架,按照安全杂项入门、隐写术、Web渗透、密码学基础、软件逆向工程、二进制程序漏洞利用(PWN)的顺序构建知识体系,每节附有大量实操练习,即使是接近没有网络安全基础的“新人”,也能对照书中操作,独立复现实验内容。
CTF那些事儿 目录
目 录
前言
第0章 开启CTF之旅 1
0.0 CTF比赛的历史 1
0.1 CTF比赛的常见赛制 1
0.2 国内外知名的CTF比赛 3
0.3 国内外知名的CTF战队 4
0.4 学习前的实验环境准备 7
0.4.0 虚拟机运行软件 7
0.4.1 搭建Python脚本运行环境 9
0.4.2 搭建Docker使用环境 11
第1章 安全杂项 12
1.0 安全杂项类赛题简介 12
1.1 常见的编码与解码 13
1.1.0 ASCII编码 13
1.1.1 Base64编码 15
1.1.2 Base32编码 18
1.1.3 Base16编码 19
1.1.4 其他Base系列编码 19
1.1.5 Shellcode编码 21
1.1.6 Quoted-printable编码 22
1.1.7 UUencode编码 22
1.1.8 XXencode编码 23
1.1.9 URL编码 24
1.1.10 摩斯码 24
1.1.11 JSFuck编码 25
1.1.12 Brainfuck编码 26
1.1.13 编码类题目的通用解题方法 28
1.2 网络流量分析 30
1.2.0 网络协议的基础知识 31
1.2.1 Wireshark的基本使用方法 33
1.2.2 CTF流量分析的通用方法 42
1.2.3 ICMP 44
1.2.4 Telnet 45
1.2.5 FTP 47
1.2.6 DNS 48
1.2.7 HTTP 50
1.2.8 USB 59
1.2.9 TLS 60
1.2.10 IEEE 802.11 62
1.3 日志分析 65
1.3.0 Web日志及分析方法 65
1.3.1 系统设备日志及分析方法 70
1.4 电子取证分析 75
1.4.0 电子取证的常用技术 75
1.4.1 文件恢复 77
1.4.2 磁盘取证分析方法 79
1.4.3 内存取证分析方法 81
1.5 压缩文件格式与破解 84
1.5.0 ZIP压缩包格式 84
1.5.1 伪加密 87
1.5.2 压缩包密码爆破 89
1.5.3 CRC碰撞破解压缩包 91
1.5.4 已知明文攻击 93
1.6 信息搜集与搜索引擎的高级用法 95
1.6.0 信息搜集方法 95
1.6.1 搜索引擎的高级用法 97
第2章 安全杂项――隐写术专题 99
2.0 隐写术简介 99
2.1 图像隐写方法及信息提取 100
2.1.0 常见的图像隐写方法 101
2.1.1 PNG文件格式及隐写方法 102
2.1.2 JPG文件格式及隐写方法 106
2.1.3 GIF文件格式及隐写方法 110
2.1.4 图像隐写三板斧 115
2.1.5 图像隐写三板斧2.0 124
2.1.6 图像和像素值的转换 133
2.2 音频隐写方法及信息提取 135
2.2.0 常见的音频文件格式解析 135
2.2.1 基于波形图的隐写 137
2.2.2 基于频谱图的隐写 138
2.2.3 音频LSB隐写 139
2.2.4 MP3文件隐写 141
2.2.5 拨号音识别 144
2.2.6 音频隐写总结 146
2.3 视频隐写方法及信息提取 147
2.4 文本隐写方法及信息提取 148
2.4.0 基于文本内容的隐写 149
2.4.1 基于Word文档的隐写 149
2.4.2 基于PDF文档的隐写 151
2.5 二维码 155
2.5.0 QR码的基础知识和常用工具 156
2.5.1 QR码画图 158
2.5.2 QR码修复 159
第3章 密码学基础 161
3.0 密码学简介 161
3.1 古典密码 165
3.1.0 栅栏密码 165
3.1.1 凯撒密码 169
3.1.2 ROT位移密码 170
3.1.3 Atbash密码 172
3.1.4 猪圈密码 172
3.1.5 培根密码 173
3.1.6 简单替换密码 175
3.1.7 仿射密码 177
3.1.8 单表代换密码总结 178
3.1.9 多表代换密码 179
3.1.10 维吉尼亚密码 179
3.1.11 希尔密码 184
3.2 对称密码 185
3.2.0 对称密码的基本模型 185
3.2.1 流密码和分组密码的本质区别 186
3.2.2 xor密码 186
3.2.3 RC4 190
3.2.4 Feistel密码结构 191
3.2.5 DES 194
3.2.6 AES 195
3.2.7 填充 196
3.2.8 分组模式 197
3.3 非对称密码 206
3.3.0 RSA基础 206
3.3.1 模数N相关攻击 208
3.3.2 指数e相关攻击 212
3.3.3 私钥d相关攻击 214
3.3.4 广播攻击 215
3.3.5 ECC基础 217
3.3.6 ECC加密 218
3.3.7 Pohlig_Hellman攻击 219
3.3.8 Smarts攻击 220
3.4 哈希函数 221
3.4.0 哈希函数的基本模型 221
3.4.1 MD5 222
3.4.2 哈希长度扩展攻击 223
第4章 Web渗透基础 228
4.0 引言 228
4.0.0 概述 228
4.0.1 HTTP理论基础 229
4.0.2 环境搭建与工具使用 234
4.1 Web信息收集的技巧 241
4.1.0 端口扫描 241
4.1.1 目录探测 247
4.1.2 指纹识别 255
4.2 暴力破解 258
4.2.0 用户名/密码爆破 258
4.2.1 参数爆破 264
4.2.2 密钥爆破 268
4.2.3 随机数爆破 271
4.2.4 字典 275
4.3 PHP弱类型 277
4.3.0 PHP代码基础 277
4.3.1 PHP弱类型问题 280
4.4 上传漏洞 283
4.4.0 前端JavaScript绕过 287
4.4.1 MIME-Type绕过 288
4.4.2 黑名单绕过 288
4.4.3 .htaccess绕过 289
4.4.4 后缀名绕过 290
4.4.5 图片马 291
4.4.6 其他类型的问题 296
4.5 SQL注入漏洞 297
4.5.0 SQL注入 297
4.5.1 SQL注入漏洞的分类 300
4.5.2 SQL注入漏洞实战 301
4.5.3 SQLmap 307
4.5.4 宽字节注入 309
4.5.5 WAF绕过 310
4.5.6 利用SQL注入读写文件 313
4.5.7 报错注入 314
4.6 文件包含 317
4.6.0 php://filter进阶 321
4.6.1 文件包含的分类 322
4.6.2 文件包含中的截断和phar:// 322
4.7 命令执行 324
4.7.0 危险函数 332
4.7.1 无参数RCE 333
4.8 CSRF与XSS 338
4.8.0 CSRF 338
4.8.1 CSRF防御 340
4.8.2 XSS 341
4.9 SSRF 344
第5章 软件逆向工程 347
5.0 软件逆向工程简介 347
5.0.0 软件是怎么生成的 347
5.0.1 软件逆向工程的定义及目标 349
5.0.2 软件逆向工程的发展历史 349
5.1 CTF软件逆向工程入门 350
5.1.0 逆向题目的特点 350
5.1.1 逆向真经 351
5.2 静态分析方法 352
5.2.0 静态分析的原理和技巧 352
5.2.1 静态分析的常用工具 355
5.2.2 静态分析实战 359
5.3 动态分析方法 383
5.3.0 动态调试的技巧 383
5.3.1 汇编 384
5.3.2 使用OllyDbg进行动态调试 392
5.3.3 使用GDB进行动态调试 399
5.3.4 使用IDA进行本地动态调试 403
5.3.5 使用IDA进行远程动态调试 407
第6章 进入 PWN 的世界 410
6.0 PWN简介 410
6.1 CTF中的PWN 410
6.2 栈溢出入门 414
6.2.0 认识栈结构 415
6.2.1 函数调用过程分析 415
6.2.2 Linux操作系统的基本保护
?机制 418
6.2.3 覆盖返回地址 419
6.2.4 覆盖返回地址到Shellcode 421
6.2.5 编写单个函数的ROP链 423
6.2.6 编写两个函数的ROP链 427
6.2.7 编写多个函数的ROP链 431
6.2.8 ret2syscall 433
6.2.9 用动态链接动态泄露system
?地址并利用 437
6.2.10 64位程序的栈溢出 442
6.2.11 未知远程libc的解法 443
6.3 格式化字符串 443
6.3.0 格式化字符串的原理 443
6.3.1 格式化字符串漏洞的利用 446
6.3.2 通过格式化字符串漏洞泄露
?栈上内容 447
6.3.3 通过格式化字符串漏洞泄露
?任意地址内存 448
6.3.4 通过格式化字符串漏洞覆盖
?任意地址内存 450
6.3.5 64位格式化字符串 456
6.3.6 格式化字符串的综合利用 456
6.4 栈溢出进阶技术 457
6.4.0 栈劫持 457
6.4.1 ropchain 463
6.4.2 Canary保护机制及其利用
?方式 463
6.4.3 __libc_csu_init的利用方式 472
6.4.4 ret2_dl_runtime_resolve 474
6.5 栈溢出和格式化字符串总结 484
第7章 PWN进阶 485
7.0 堆管理器 485
7.0.0 ptmalloc堆管理器的基本功能 485
7.0.1 malloc和free简介 486
7.0.2 内存分配背后的系统调用 487
7.1 堆相关的数据结构 488
7.1.0 malloc_chunk 488
7.1.1 bin 490
7.1.2 fast bin 492
7.1.3 small bin 493
7.1.4 large bin 495
7.1.5 unsorted bin 496
7.1.6 bin 的总结 497
7.2 malloc的基本算法 497
7.2.0 __libc_malloc 497
7.2.1 fast bin分配算法 498
7.2.2 small bin分配算法 499
7.2.3 large bin分配算法1 500
7.2.4 unsorted bin分配算法 501
7.2.5 large bin分配算法2 503
7.2.6 寻找更大的bin链 504
7.2.7 使用top chunk 505
7.2.8 总结 506
7.3 free函数的基本算法 506
7.4 堆利用的基本方法 507
7.4.0 House of Prime 507
7.4.1 House of Lore 508
7.4.2 House of Spirit 509
7.4.3 House of Force 512
7.4.4 House of系列方法总结 514
7.5 链表攻击 514
7.5.0 unlink 514
7.5.1 fast bin 攻击 520
7.5.2 unsorted bin 攻击 524
7.6 其他漏洞形式及其利用 526
7.6.0 off by one 527
7.6.1 off by null 530
7.6.2 fast bin 三重释放攻击 533
7.7 例题讲解 536
7.8 tcache机制及其利用方式 542
7.8.0 tcache的重要数据结构与
?源码解读 542
7.8.1 tcache dup(glibc 2.27) 5
前言
第0章 开启CTF之旅 1
0.0 CTF比赛的历史 1
0.1 CTF比赛的常见赛制 1
0.2 国内外知名的CTF比赛 3
0.3 国内外知名的CTF战队 4
0.4 学习前的实验环境准备 7
0.4.0 虚拟机运行软件 7
0.4.1 搭建Python脚本运行环境 9
0.4.2 搭建Docker使用环境 11
第1章 安全杂项 12
1.0 安全杂项类赛题简介 12
1.1 常见的编码与解码 13
1.1.0 ASCII编码 13
1.1.1 Base64编码 15
1.1.2 Base32编码 18
1.1.3 Base16编码 19
1.1.4 其他Base系列编码 19
1.1.5 Shellcode编码 21
1.1.6 Quoted-printable编码 22
1.1.7 UUencode编码 22
1.1.8 XXencode编码 23
1.1.9 URL编码 24
1.1.10 摩斯码 24
1.1.11 JSFuck编码 25
1.1.12 Brainfuck编码 26
1.1.13 编码类题目的通用解题方法 28
1.2 网络流量分析 30
1.2.0 网络协议的基础知识 31
1.2.1 Wireshark的基本使用方法 33
1.2.2 CTF流量分析的通用方法 42
1.2.3 ICMP 44
1.2.4 Telnet 45
1.2.5 FTP 47
1.2.6 DNS 48
1.2.7 HTTP 50
1.2.8 USB 59
1.2.9 TLS 60
1.2.10 IEEE 802.11 62
1.3 日志分析 65
1.3.0 Web日志及分析方法 65
1.3.1 系统设备日志及分析方法 70
1.4 电子取证分析 75
1.4.0 电子取证的常用技术 75
1.4.1 文件恢复 77
1.4.2 磁盘取证分析方法 79
1.4.3 内存取证分析方法 81
1.5 压缩文件格式与破解 84
1.5.0 ZIP压缩包格式 84
1.5.1 伪加密 87
1.5.2 压缩包密码爆破 89
1.5.3 CRC碰撞破解压缩包 91
1.5.4 已知明文攻击 93
1.6 信息搜集与搜索引擎的高级用法 95
1.6.0 信息搜集方法 95
1.6.1 搜索引擎的高级用法 97
第2章 安全杂项――隐写术专题 99
2.0 隐写术简介 99
2.1 图像隐写方法及信息提取 100
2.1.0 常见的图像隐写方法 101
2.1.1 PNG文件格式及隐写方法 102
2.1.2 JPG文件格式及隐写方法 106
2.1.3 GIF文件格式及隐写方法 110
2.1.4 图像隐写三板斧 115
2.1.5 图像隐写三板斧2.0 124
2.1.6 图像和像素值的转换 133
2.2 音频隐写方法及信息提取 135
2.2.0 常见的音频文件格式解析 135
2.2.1 基于波形图的隐写 137
2.2.2 基于频谱图的隐写 138
2.2.3 音频LSB隐写 139
2.2.4 MP3文件隐写 141
2.2.5 拨号音识别 144
2.2.6 音频隐写总结 146
2.3 视频隐写方法及信息提取 147
2.4 文本隐写方法及信息提取 148
2.4.0 基于文本内容的隐写 149
2.4.1 基于Word文档的隐写 149
2.4.2 基于PDF文档的隐写 151
2.5 二维码 155
2.5.0 QR码的基础知识和常用工具 156
2.5.1 QR码画图 158
2.5.2 QR码修复 159
第3章 密码学基础 161
3.0 密码学简介 161
3.1 古典密码 165
3.1.0 栅栏密码 165
3.1.1 凯撒密码 169
3.1.2 ROT位移密码 170
3.1.3 Atbash密码 172
3.1.4 猪圈密码 172
3.1.5 培根密码 173
3.1.6 简单替换密码 175
3.1.7 仿射密码 177
3.1.8 单表代换密码总结 178
3.1.9 多表代换密码 179
3.1.10 维吉尼亚密码 179
3.1.11 希尔密码 184
3.2 对称密码 185
3.2.0 对称密码的基本模型 185
3.2.1 流密码和分组密码的本质区别 186
3.2.2 xor密码 186
3.2.3 RC4 190
3.2.4 Feistel密码结构 191
3.2.5 DES 194
3.2.6 AES 195
3.2.7 填充 196
3.2.8 分组模式 197
3.3 非对称密码 206
3.3.0 RSA基础 206
3.3.1 模数N相关攻击 208
3.3.2 指数e相关攻击 212
3.3.3 私钥d相关攻击 214
3.3.4 广播攻击 215
3.3.5 ECC基础 217
3.3.6 ECC加密 218
3.3.7 Pohlig_Hellman攻击 219
3.3.8 Smarts攻击 220
3.4 哈希函数 221
3.4.0 哈希函数的基本模型 221
3.4.1 MD5 222
3.4.2 哈希长度扩展攻击 223
第4章 Web渗透基础 228
4.0 引言 228
4.0.0 概述 228
4.0.1 HTTP理论基础 229
4.0.2 环境搭建与工具使用 234
4.1 Web信息收集的技巧 241
4.1.0 端口扫描 241
4.1.1 目录探测 247
4.1.2 指纹识别 255
4.2 暴力破解 258
4.2.0 用户名/密码爆破 258
4.2.1 参数爆破 264
4.2.2 密钥爆破 268
4.2.3 随机数爆破 271
4.2.4 字典 275
4.3 PHP弱类型 277
4.3.0 PHP代码基础 277
4.3.1 PHP弱类型问题 280
4.4 上传漏洞 283
4.4.0 前端JavaScript绕过 287
4.4.1 MIME-Type绕过 288
4.4.2 黑名单绕过 288
4.4.3 .htaccess绕过 289
4.4.4 后缀名绕过 290
4.4.5 图片马 291
4.4.6 其他类型的问题 296
4.5 SQL注入漏洞 297
4.5.0 SQL注入 297
4.5.1 SQL注入漏洞的分类 300
4.5.2 SQL注入漏洞实战 301
4.5.3 SQLmap 307
4.5.4 宽字节注入 309
4.5.5 WAF绕过 310
4.5.6 利用SQL注入读写文件 313
4.5.7 报错注入 314
4.6 文件包含 317
4.6.0 php://filter进阶 321
4.6.1 文件包含的分类 322
4.6.2 文件包含中的截断和phar:// 322
4.7 命令执行 324
4.7.0 危险函数 332
4.7.1 无参数RCE 333
4.8 CSRF与XSS 338
4.8.0 CSRF 338
4.8.1 CSRF防御 340
4.8.2 XSS 341
4.9 SSRF 344
第5章 软件逆向工程 347
5.0 软件逆向工程简介 347
5.0.0 软件是怎么生成的 347
5.0.1 软件逆向工程的定义及目标 349
5.0.2 软件逆向工程的发展历史 349
5.1 CTF软件逆向工程入门 350
5.1.0 逆向题目的特点 350
5.1.1 逆向真经 351
5.2 静态分析方法 352
5.2.0 静态分析的原理和技巧 352
5.2.1 静态分析的常用工具 355
5.2.2 静态分析实战 359
5.3 动态分析方法 383
5.3.0 动态调试的技巧 383
5.3.1 汇编 384
5.3.2 使用OllyDbg进行动态调试 392
5.3.3 使用GDB进行动态调试 399
5.3.4 使用IDA进行本地动态调试 403
5.3.5 使用IDA进行远程动态调试 407
第6章 进入 PWN 的世界 410
6.0 PWN简介 410
6.1 CTF中的PWN 410
6.2 栈溢出入门 414
6.2.0 认识栈结构 415
6.2.1 函数调用过程分析 415
6.2.2 Linux操作系统的基本保护
?机制 418
6.2.3 覆盖返回地址 419
6.2.4 覆盖返回地址到Shellcode 421
6.2.5 编写单个函数的ROP链 423
6.2.6 编写两个函数的ROP链 427
6.2.7 编写多个函数的ROP链 431
6.2.8 ret2syscall 433
6.2.9 用动态链接动态泄露system
?地址并利用 437
6.2.10 64位程序的栈溢出 442
6.2.11 未知远程libc的解法 443
6.3 格式化字符串 443
6.3.0 格式化字符串的原理 443
6.3.1 格式化字符串漏洞的利用 446
6.3.2 通过格式化字符串漏洞泄露
?栈上内容 447
6.3.3 通过格式化字符串漏洞泄露
?任意地址内存 448
6.3.4 通过格式化字符串漏洞覆盖
?任意地址内存 450
6.3.5 64位格式化字符串 456
6.3.6 格式化字符串的综合利用 456
6.4 栈溢出进阶技术 457
6.4.0 栈劫持 457
6.4.1 ropchain 463
6.4.2 Canary保护机制及其利用
?方式 463
6.4.3 __libc_csu_init的利用方式 472
6.4.4 ret2_dl_runtime_resolve 474
6.5 栈溢出和格式化字符串总结 484
第7章 PWN进阶 485
7.0 堆管理器 485
7.0.0 ptmalloc堆管理器的基本功能 485
7.0.1 malloc和free简介 486
7.0.2 内存分配背后的系统调用 487
7.1 堆相关的数据结构 488
7.1.0 malloc_chunk 488
7.1.1 bin 490
7.1.2 fast bin 492
7.1.3 small bin 493
7.1.4 large bin 495
7.1.5 unsorted bin 496
7.1.6 bin 的总结 497
7.2 malloc的基本算法 497
7.2.0 __libc_malloc 497
7.2.1 fast bin分配算法 498
7.2.2 small bin分配算法 499
7.2.3 large bin分配算法1 500
7.2.4 unsorted bin分配算法 501
7.2.5 large bin分配算法2 503
7.2.6 寻找更大的bin链 504
7.2.7 使用top chunk 505
7.2.8 总结 506
7.3 free函数的基本算法 506
7.4 堆利用的基本方法 507
7.4.0 House of Prime 507
7.4.1 House of Lore 508
7.4.2 House of Spirit 509
7.4.3 House of Force 512
7.4.4 House of系列方法总结 514
7.5 链表攻击 514
7.5.0 unlink 514
7.5.1 fast bin 攻击 520
7.5.2 unsorted bin 攻击 524
7.6 其他漏洞形式及其利用 526
7.6.0 off by one 527
7.6.1 off by null 530
7.6.2 fast bin 三重释放攻击 533
7.7 例题讲解 536
7.8 tcache机制及其利用方式 542
7.8.0 tcache的重要数据结构与
?源码解读 542
7.8.1 tcache dup(glibc 2.27) 5