赞
踩
目录
CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几个突出的问题:
1)线下CTF比赛培训中存在严重的“最后一公里”问题,线下培训讲师的水平参差不齐。
2)国内高等院校和职业院校的网络空间安全学科与专业缺乏实战型、系统化的教材和配套实验课程。例如,Base64编码是网络安全行业必备的基础知识,但是学校的教材并不涉及该知识点,也没有专门的实验课对该知识进行讲解。
3)大部分CTF比赛书籍对想学习网络空间安全技术的新人不够友好,很多初学者找不到快速、有效的学习方法。
为了解决上述问题,帮助零基础的学习者快速掌握基本技能,同时吸引更多的人关注网络空间安全技能的学习,推进CTF比赛的发展,本书创新性地提出新的CTF知识学习框架,并在每一章附有大量实操练习,即使是没有网络空间安全知识基础的新手,也能按照书中的操作独立复现实验内容。
本书不仅讲授了网络空间安全相关的基础知识和操作技能,还探讨了CTF赛题的本质,着重阐述了面对不同类型题目时的分析思路和方法。比如,我们首次提出“图像隐写三板斧”“逆向真经”等解题思维模式,并较为全面地总结了CTF比赛中对工控安全相关知识的考查方式。从线下培训的效果来看,这些方法的实用性极强。
《CTF那些事儿》通过喜闻乐见的方式,以通俗易懂、幽默风趣的语言普及网络空间安全的知识,从而提高公众的网络空间安全意识,进而促进全行业水平的提高,为我国成为网络安全强国打下坚实的基础。
本书由顶级CTF战队Lancet的指导教师李舟军教授和核心团队成员历时4年打磨而成,创新性地提出了新的CTF知识学习框架,体现了李舟军教授多年的教学精髓和带队经验。书中涵盖PWN、逆向、Web等常见题目,并系统性总结了CTF比赛中工控安全的考察方式。不仅讲授基础知识和操作技能,还探讨CTF赛题的本质,着重阐述了面对不同类型题目时的分析思路和方法。
同时,书中针对CTF比赛学习的编排方式,符合我国主流的计算机学科知识体系结构,李舟军教授结合学生的实战经验,为网络安全空间爱好者提供了一本教科书式的实践指导手册。关注“IT阅读排行榜”,回复72991
1)想系统学习网络安全基础技能的读者。本书作者的初衷,是希望以通俗易懂的方式呈现网络安全基础知识和技能,凡是对网络安全感兴趣的人都可以学习本书。
2)政府机关、事业单位、国企及其他企业的技术人员。对于各类企业中需要参加CTF比赛的读者而言,本书可以作为赛前训练的指导书,帮助他们在短时间内快速掌握网络安全技能。
3)高等院校和职业院校学生。对于高等院校和职业院校的学生,本书可以作为他们学习网络安全知识的“准教材”,有效补充理论知识与实操技能的不足。
4)网络安全培训和比赛从业人员。我们希望抛砖引玉,使本书成为网络安全培训的基础教材和重要参考书,促进CTF比赛和培训行业的进一步发展。
李舟军教授长期从事网络与信息安全领域的研究与教学工作,为国家培养了一批高水平网络安全人才。同时,作为国务院学位委员会网络空间安全一级学科研究论证工作组成员,在该学科创建和发展中发挥了重要作用。由李舟军教授指导的Lancet战队在“网鼎杯”“强网杯”“鹏程杯”等CTF比赛中取得了优异的成绩。本书由Lancet战队倾力打造,创造性地提出新的网络安全基础技能的体系化学习框架,是一本非常适合“小白”入门的网络安全基础技能自学手册。同时,书中以严谨的态度介绍了网络安全相关理论和技术的历史脉络,并配以大量实操练习和离线工具包,兼顾知识性、趣味性与实战性,对读者将大有裨益。我认为,该书是CTF培训以及网络安全实战技能教学的一本难得的佳作,特此推荐。
——方滨兴,中国工程院院士,网络与信息安全专家,国务院学位委员会网络空间安全学科评议组召集人,教育部网络空间安全专业教学指导委员会副主任
由于网络安全鲜明的实战性质和对抗特色,CTF成为学习和实践网络安全技术的重要途径,也是考察和选拔网络安全专业人才的重要手段。在众多的网络安全技术书籍,甚至专门介绍CTF的书籍中,李舟军教授主编的这本书独具特色,体现了他多年来教学的精髓。书中涵盖了PWN、逆向、Web等CTF常见的题目,也包括工控系统安全这样专业且实用的领域。它不仅是网络安全专业学生和爱好者学习CTF的重要指南,也是网络安全从业人员难得的学习资料。
——段海新,清华大学网络研究院教授,博士生导师,蓝莲花战队联合创始人,现任国务院学位委员会网络空间安全学科评议组成员
这本书虽然以 CTF 为线索来组织内容,但也是一份不错的网络安全入门学习资料。书中对每一个技术门类都从零讲起,并配有大量便于读者理解的图例,可谓手把手教学。此外,本书在技术内容之外还讲述了技术发展的历史和文化,非常值得一读。
——于旸,腾讯杰出科学家,玄武实验室负责人
李舟军教授和他所带领的Lancet战队是我国CTF竞赛演练领域的先锋。过去几年中,Lancet战队在李老师指导下斩获了几乎所有国内顶级竞赛的大奖。本书以李老师扎实的理论和教学实践为锚点,结合指导学生实战的经验,为所有网络空间安全爱好者提供了一本教科书式的实践导学手册,也为通过组织CTF战队进行教学工作的老师们提供了一部路径清晰、内涵丰富的参考教案。
——蔡晶晶,北京永信至诚科技股份有限公司董事长,教授级高级工程师,入选国家“万人计划”,国家网络安全实验平台项目专家,公安部网络安全专家
这本书全面而系统地介绍了CTF的重要知识点,读者可以通过阅读本书,获得广泛而深入的安全领域知识。对信息安全专业的学生来说,这本书既是入门的绝佳指南,又是提升技能和精通CTF的宝贵资源。对于那些希望进入安全领域从事研究工作的读者来说,阅读这本书也会有极大的收获。作为我的研究生导师,李舟军教授的专业指导和悉心培养对我产生了深远的影响,让我受益匪浅。
——龚广,360 首席安全研究员兼数字安全集团漏洞研究院院长,研究员级高级工程师
- Contents目 录
-
- 前言
-
- 第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) 547
-
- 7.8.2 tcache 双重释放(glibc 2.27) 549
-
- 7.8.3 tcache dup(glibc 2.29) 551
-
- 7.8.4 tcache 双重释放(glibc 2.29) 551
-
- 7.8.5 tcache stash unlink(glibc 2.29) 557
-
- 7.8.6 tcache stash unlink plus
-
- ?(glibc 2.29) 560
-
- 7.8.7 tcache stash unlink plus plus
-
- ?(glibc 2.29) 562
-
- 7.8.8 large bin 攻击1(glibc 2.29) 564
-
- 7.8.9 large bin 攻击2(glibc 2.29) 568
-
- 7.8.10 tcache 攻击(glibc 2.31) 569
-
- 7.8.11 堆利用总结 572
-
- 7.9 PWN中的打补丁技术 572
-
- 7.9.0 change data 573
-
- 7.9.1 add segement 575
-
- 7.9.2 compress instruction 578
-
- 7.9.3 add logic 580
-
- 7.9.4 打补丁技术总结 582
-
- 第8章 工业控制系统安全 583
-
- 8.0 工业控制系统概述 583
-
- 8.0.0 工业控制系统的定义 583
-
- 8.0.1 工业控制系统安全概述 586
-
- 8.0.2 工业控制系统的组成 588
-
- 8.0.3 工业控制系统的架构 601
-
- 8.1 工业控制系统编程 607
-
- 8.1.0 读懂梯形图 608
-
- 8.1.1 学会指令表 633
-
- 8.1.2 其他编程语言 650
-
- 8.1.3 常见工程文件汇总 653
-
- 8.2 工业控制系统通信协议 659
-
- 8.2.0 Modbus协议 659
-
- 8.2.1 西门子S7协议 669
-
- 8.2.2 其他工控协议 680
-
- 8.2.3 PLC漏洞利用 691
-
- 参考文献 710
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。