科技>计算机>信息安全
从0到1:CTFer成长之路

从0到1:CTFer成长之路"

作者:Nu1L战队
ISBN:9787121376955
定价:¥158.0
字数:1069千字
页数:668
出版时间:2020-09
开本:16开
版次:01-02
装帧:
出版社:电子工业出版社
简介

本书主要面向CTF入门者,融入了CTF比赛的方方面面,让读者可以进行系统性的学习。本书包括13章的内容,技术介绍分为线上赛和线下赛两部分。线上赛包括10章,涵盖Web、PWN、Reverse、APK、Misc、Crypto、区块链、代码审计。线下赛包括2章,分别为AWD和靶场渗透。第13章通过Nu1L战队成员的故事和联合战队管理等内容来分享CTF战队组建和管理、运营的经验。

前言

序 ——做网络安全竞赛高质量发展的推动者 Nu1L战队的同学们编写了这本《从0到1:CTFer成长之路》,希望我写一个序。对于Nu1L战队,我的了解主要来自“强网杯”全国网络安全挑战赛和“强网”拟态防御国际精英邀请赛,在这两个国内很优秀的竞赛平台上,他们都取得了很好的成绩,也为拟态防御白盒测试做了很多工作。希望他们今后继续努力,争取为我国网络空间安全技术创新做贡献;也希望这本书能为更多的年轻人学习、掌握网络空间安全知识与实践技能提供帮助,激发前行的动力。 “网络空间的竞争,关键靠人才。”“网络安全的本质在对抗,对抗的本质是攻防两端的能力较量。”这些重要论述说明了两个基本问题:其一,人是网络安全的核心;其二,提高人的能力要靠实践锻炼。由此,网络安全竞赛对于提升人才培养质量效益具有特殊意义。从2018年开始,通过“强网杯”等一些列竞赛的推动,我国网络安全竞赛和人才培养进入了一个蓬勃发展的新阶段。但是,我们也看到了诸多问题,比如:竞赛质量良莠不齐,竞赛程式化、商业化、娱乐化日趋严重,职业选手也就是“赛棍”混迹其中,竞赛和人才培养、产业发展相脱节,等等。面对这些问题,我们既需要对网络安全竞赛进行规范,更需要推动竞赛高质量发展,让竞赛回归到服务人才培养、服务产业进步、服务技术创新的初心和本源上。 网络安全竞赛高质量发展,不是看规模有多大,不是看指导单位的层级有多高,更不是看现场有多么酷炫,而是要看究竟解决了或者帮助解决了什么实际问题,看实实在在取得了什么效益,看对网络空间安全发展有什么实际推动作用。一句话,高质量发展的核心就是一个字——“实”。 竞赛要与人才培养相结合。当前,我国网络安全人才培养还处于一个逐步成熟的发展阶段,其中最大的一个问题是课程体系和实践教学体系还未完全形成。网络安全竞赛对于助推实践教学体系形成,具有一定的意义,这个过程也是高质量发展的重要基础。需要汇集更多的智慧和力量,把竞赛中的技巧、经验上升到教育学的层面,并结合理论知识架构,升华为教学体系、衍化为实验项目、固化为实践平台。把题目抽象为科目,才会有更大的普适性,才能便于更多的人学习、实践网络安全,竞赛也就有了源源不断的竞技者,有更强的生命力。这个工作很有意义,希望大家广泛参与。 竞赛要与产业发展相结合。今天我们都在讲新工科,那么什么是新工科?新工科就是要更加突出“做中学”。建设新工科,需要产教融合,“象牙塔”培养不出新工科人才。网络安全竞赛,就是要架起人才培养和产业发展之间的一座桥梁,为产业发展服务,这样才会有高质量发展的动力。网络安全竞赛需要打破当下“大而全”“大呼隆”的局面,要进行“小而精”的变革,围绕专门领域、细分产业、真实场景设置“赛场”,不断强化指向性、针对性,以点带面,汇聚更多的企业、供应商参与其中,增加产教融合的黏性。希望未来可以看到更多的“专项赛”,这也需要大家共同努力。 竞赛要与技术创新相结合。网络安全中有一个很大痛点,就是安全性难以验证,安全往往处于自说自话的层面。我曾经多次讲:“安全不安全,‘白帽们’说了算。”我国网络安全技术创新还有很长的路要走,网络安全竞赛应该在这个进程中起到推动作用,这是高质量发展的更高目标。我们举办了三届“强网”拟态防御精英赛,就是让“白帽们”都来打擂台,为内生安全技术“挑毛病”。总的感觉,大家还没有使出全力、拿出“绝活”,这里有赛制需要进一步创新的问题,也有这类比赛的土壤还不够肥沃的问题。未来希望大家多到紫金山来打比赛,共同推动内生安全技术发展。 希望Nu1L战队和更多CTFer走到一起,不但做网络安全竞赛的竞技者,更要努力做网络安全竞赛高质量发展的推动者,携起手来为网络强国建设添砖加瓦。 邬江兴 战略支援部队信息工程大学 ? 序 信息网络已渗透到社会的各个方面,各类重要信息系统已成为国家关键基础设施。而网络空间安全问题日益突出,受到了全社会的关注,也对网络空间安全人才提出了广泛而迫切的需求。网络空间安全人才培养问题已成为当前教育界、学术界和产业界共同关注的焦点问题。 网络空间安全其本质是一种高技术对抗。网络空间安全技术主要是解决各类信息系统和信息的安全保护问题。而信息技术自身的快速发展,也必然带来网络空间安全技术的快速发展,其需要密码学、数学、物理、计算机、通信、网络、微电子等各种科学理论与技术支撑。同时,安全的对抗性特点决定了其需要根据对手的最新能力、最新特点而采取有针对性的防御策略,网络空间安全也是一项具有很强实践性要求的学科。因此,网络空间安全人才培养不仅需要重视理论与技术体系的传授,还需要重视实践能力的锻炼。 CTF(Capture The Flag)比赛是网络空间安全人才培养方式的一种重要探索。CTF比赛于上世纪90年代起始于美国,近年来引进到我国,并得到了业界的广泛认可和支持。兴趣是年轻人学习的最好动力,CTF比赛很好地将专业知识和比赛乐趣有机结合。CTF比赛通过以赛题夺旗方式评估个人或团队的网络攻防对抗能力,参赛队员在不断的网络攻防对抗中争取最佳成绩。在具体的赛题设置上综合了密码学、系统安全、软件漏洞等多种理论知识,充分考虑了不同水平、不同阶段选手的关键能力评估需求;在比赛形式上,将理论知识和实际攻防相结合,既是对理论知识掌握程度的评估,也是对动手实践能力、知识灵活应用能力的考验。近年来国内的CTF比赛如火如荼,在赛题设计、赛制设定等方面越来越成熟,也越来越完善。当前,参与CTF比赛几乎已成为网络空间安全本科学习的必要经历。国内的各种CTF比赛在吸引网络空间安全人才,引导网络空间人才培养方面发挥了重要作用。 对于关注CTF比赛的同学,本书是一份重要的参考资料。本书作者Nu1L 战队是CTF赛场上的劲旅,屡次在CTF比赛中取得骄人战绩,具有丰富的CTF比赛经验和队伍建设经验。结合其多年的比赛经验和对网络空间安全理论与技术体系的理解和认识,本书对CTF比赛的线上赛、线下赛等所涉及的密码学、软件漏洞、区块链等题型和关键知识点进行了总结,并分享了Nu1L 战队的团队发展经验。通过本书不仅可以较为系统地学习和掌握网络空间安全相关基础知识,还可以从中学习和借鉴CTF比赛团队的组建和培养经验。 希望读者能从本书中吸取宝贵经验,在未来CTF比赛中取得好成绩!也期待CTF比赛在国内不断进步,为我国网络空间安全人才培养做出更大的贡献! 冯登国 2020年夏于北京 ? 序 作为从事网络安全研究和教学多年的教师,也作为中国CTF竞赛早期的参与者和组织者,我很荣幸接受Nu1L战队队长付浩的邀请,为这本难得的CTF竞赛参考书撰写序。 网络空间安全是一个独具特色的学科,研究的是人与人之间在网络空间里思维和智力的较量,有很强的对抗性和实践性。不同于抽象的理论研究,网络空间安全的实践性要求我们不仅在实验室,也要在现实的互联网上证实技术的可行性;同时,由于其激烈的对抗性,常规的方法往往早已成为低垂的果实,成功的攻击和防范都必须创新、另辟蹊径,也往往引人入胜。我在学生时代就被网络安全的魅力所吸引,至今从事网络安全研究和教学已二十多年。正是对安全研究的兴趣驱动着我去探索各种新问题和新方法,至今热情不减。 CTF(Capture The Flag)竞赛完美地体现着网络空间安全这种智力的对抗性和技术的实践性。CTF竞赛于20世纪90年代起源于美国,如今风靡全球,成为全世界网络安全爱好者学习和训练的重要活动。CTF竞赛覆盖网络安全、系统安全和密码学等领域,涉及协议分析、软件逆向、漏洞挖掘与利用、密码分析知识点。特别是攻防模式的CTF竞赛给参赛者一种类似实战的体验,参赛者要发现并利用对手的安全漏洞,同时防范对手的攻击,对自己的知识和技能是全面锻炼。同时,CTF竞赛对学习网络空间安全学科的学生或技术人员是一种非常好的学习和训练方式。 CTF竞赛以其独特的魅力吸引了一批批安全从业者自发的投身其中。我和我的学生在十多年前开始涉足世界CTF竞赛,以清华大学网络与信息安全实验室(NISL)为基地,组建了中国最早的CTF战队之一——蓝莲花(Blue-Lotus),后来有多所高校的骨干成员加入,曾经多次入围DEF CON等国际著名赛事的决赛,并与0ops战队一起取得了DEF CON第二名的成绩。后来,蓝莲花许多队员在各自的高校成立了独立的战队,他们成为了后来中国风起云涌的CTF战队的星星之火。如今,早期的蓝莲花队员和很多大学的CTF战队核心成员已成长为网络安全领域的精英,在各行各业中发挥了中流砥柱的作用。 正是意识到CTF在实战性安全人才培养中的重要性,我和同事诸葛建伟以及蓝莲花战队的队员们从2014年开始组织了国内一系列的CTF竞赛和后来的全国CTF联赛XCTF,这些竞赛为后来中国如火如荼的CTF竞赛培养了“群众”基础。近年来的“网鼎杯”“护网杯”等国家级安全赛事动辄上万只队伍、几万队员参赛,银行、通信等不少行业也在组织自己行业内部的CTF竞赛,教育部的大学生信息安全竞赛也增加了CTF形式的“创新实践能力”比赛。很多学生在自己报考研究生或找工作的简历上写上各种CTF赛事的成绩。可见,CTF作为安全人才培养的一种重要形式已经得到了学术界和工业界的认可。 经历过近年来CTF浪潮各种竞赛的磨练,Nu1L战队已经成为长期活跃在CTF国内外赛场上的一只老牌劲旅,在国内外许多重要的赛事中频频取得佳绩。并不像电竞游戏那种炫酷的对抗游戏,CTF竞赛培养的不是游戏人才,而是现实世界的精英。像付浩一样,Nu1L战队的许多核心成员已经成长为安全行业顶尖的专业人才,成为我国网络空间安全领域的坚强的卫士。除此之外,Nu1L战队还组织了N1CTF、空指针等一系列的CTF竞赛,为国内外的CTF爱好者提供了一个交流的平台,为CTF社区的发展做出了重要贡献。 本书为当前众多CTF入门的参赛者提供了一份不可多得的参考教材。由于CTF覆盖知识点庞杂,而且近年来由于赛事众多题目越来越难,对于CTF入门的选手来说很难把握,市面上系统地介绍CTF的书目前并不多见。本书的内容不仅覆盖了传统CTF线上、线下赛常见的知识领域,如Web攻防、逆向工程、漏洞利用、密码分析等,还增加了AWD攻防赛、区块链等新的内容。特别是本书最后加入了Nu1L战队的成长史和Nu1L两位队员的故事,融入了付浩本人对CTF比赛的期望和情怀,其中关于CTF联合战队管理、如何组织比赛、如何吸收新鲜血液等内容,都是独一无二的。这些内容融合了Nu1L整个团队多年的知识、经验和感情。我相信,本书不仅对CTF爱好者学习技术有重要帮助,也对CTF战队的组织管理者提供了难得的参考。 最后感谢Nu1L战队为CTF和安全技术爱好者贡献的这本精彩的参考书,相信它对安全技术及CTF竞赛成绩的提高都会很有帮助。 段海新 清华大学 2020年6月

目录

目 录 CTF之线上赛 第1章 Web入门 3 1.1 举足轻重的信息收集 3 1.1.1 信息搜集的重要性 3 1.1.2 信息搜集的分类 3 1.1.2.1 敏感目录泄露 4 1.1.2.2 敏感备份文件 7 1.1.2.3 Banner识别 9 1.1.3 从信息搜集到题目解决 9 1.2 CTF中的SQL注入 12 1.2.1 SQL注入基础 12 1.2.1.1 数字型注入和UNION注入 12 1.2.1.2 字符型注入和布尔盲注 17 1.2.1.3 报错注入 22 1.2.2 注入点 24 1.2.2.1 SELECT注入 24 1.2.2.2 INSERT注入 26 1.2.2.3 UPDATE注入 27 1.2.2.4 DELETE注入 28 1.2.3 注入和防御 29 1.2.3.1 字符替换 29 1.2.3.2 逃逸引号 31 1.2.4 注入的功效 33 1.2.5 SQL注入小结 34 1.3 任意文件读取漏洞 34 1.3.1 文件读取漏洞常见触发点 35 1.3.1.1 Web语言 35 1.4.1.2 中间件/服务器相关 37 1.4.1.3 客户端相关 39 1.3.2 文件读取漏洞常见读取路径 39 1.3.2.1 Linux 39 1.3.2.2 Windows 41 1.3.3 文件读取漏洞例题 41 1.3.3.1 兵者多诡(HCTF 2016) 42 1.3.3.2 PWNHUB - Classroom 43 1.3.3.3 Show me the shell I(TCTF/0CTF 2018 FINAL) 45 1.3.3.4 BabyIntranet I(SCTF 2018) 47 1.3.3.5 SimpleVN(BCTF2018) 48 1.3.3.6 Translate(Google CTF 2018) 50 1.3.3.7 看番就能拿Flag(PWNHUB) 51 1.3.3.8 2013那年(PWNhub) 52 1.3.3.9 Comment(网鼎杯2018线上赛) 57 1.3.3.10 方舟计划(CISCN 2017) 58 1.3.3.11 PrintMD(RealWorldCTF 2018线上赛) 60 1.3.3.12 粗心的佳佳(PWNHUB) 62 1.3.3.13 教育机构(强网杯2018线上赛) 64 1.3.3.14 Magic Tunnel(RealworldCTF 2018线下赛) 65 1.3.3.15 Can you find me?(WHUCTF2019,武汉大学校赛) 67 小结 68 第2章 Web进阶 69 2.1 SSRF漏洞 69 2.1.1 SSRF的原理解析 69 2.1.2 SSRF漏洞的寻找和测试 71 2.1.3 SSRF漏洞攻击方式 72 2.1.3.1 内部服务资产探测 72 2.1.3.2 使用Gopher协议扩展攻击面 72 2.1.3.3 自动组装Gopher 80 2.1.4 SSRF的绕过 80 2.1.4.1 IP的限制 80 2.1.4.2 302跳转 82 2.1.4.3 URL的解析问题 83 2.1.4.4 DNS Rebinding 86 2.1.5 CTF中的SSRF 88 2.2 命令执行漏洞 92 2.2.1 命令执行的原理和测试方法 92 2.2.1.1 命令执行原理 93 2.2.1.2 命令执行基础 93 2.2.1.3 命令执行的基本测试 95 2.2.2 命令执行的绕过和技巧 95 2.2.2.1 缺少空格 95 2.2.2.2 黑名单关键字 97 2.2.2.3 执行无回显 98 2.2.3 命令执行真题讲解 100 2.2.3.1 2015 HITCON Babyfirst 100 2.2.3.2 2017 HITCON BabyFirst Revenge 101 2.2.3.3 2017 HITCON BabyFirst Revenge v2 103 2.3 XSS的魔力 104 2.3.1 XSS漏洞类型 104 2.3.2 XSS的tricks 108 2.3.3 XSS过滤和绕过 111 2.3.4 XSS绕过案例 117 2.4 Web文件上传漏洞 121 2.4.1 基础文件上传漏洞 121 2.4.2 截断绕过上传限制 122 2.4.2.1 00截断 122 2.4.2.2 转换字符集造成的截断 125 2.4.3 文件后缀黑名单校验绕过 126 2.4.3.1 上传文件重命名 126 2.4.3.2 上传文件不重命名 127 2.4.4 文件后缀白名单校验绕过 130 2.4.4.1 Web服务器解析漏洞 130 2.4.4.2 APACHE解析漏洞 131 2.4.5 文件禁止访问绕过 132 2.4.5.1 .htaccess禁止脚本文件执行绕过 133 2.4.5.2 文件上传到OSS 134 2.4.5.3 配合文件包含绕过 134 2.4.5.4 一些可被绕过的Web配置 135 2.4.6 绕过图片验证实现代码执行 137 2.4.7 上传生成的临时文件利用 140 2.4.8 使用file_put_contents实现文件上传 142 2.4.9 ZIP上传带来的上传问题 147 小结 156 第3章 Web拓展 157 3.1 反序列化漏洞 157 3.1.1 PHP反序列化 157 3.1.1.1 常见反序列化 158 3.1.1.2 原生类利用 160 3.1.1.3 Phar反序列化 163 3.1.1.4 小技巧 165 3.1.2 经典案例分析 170 3.2 Python的安全问题 172 3.2.1 沙箱逃逸 172 3.2.1.1 关键词过滤 172 3.2.1.2 花样import 173 3.2.1.3 使用继承等寻找对象 174 3.2.1.4 eval类的代码执行 174 3.2.2 格式化字符串 175 3.2.2.1 最原始的% 175 3.2.2.2 format方法相关 175 3.2.2.3 Python 3.6中的f字符串 176 3.2.3 Python模板注入 176 3.2.4 urllib和SSRF 177 3.2.4.1 CVE-2016-5699 177 3.2.4.2 CVE-2019-9740 178 3.2.5 Python反序列化 179 3.2.6 Python XXE 180 3.2.7 sys.audit 182 3.2.8 CTF Python案例 182 3.2.8.1 皇家线上赌场(SWPU 2018) 182 3.2.8.2 mmmmy(2018网鼎杯) 183 3.3 密码学和逆向知识 185 3.3.1 密码学知识 186 3.3.1.1 分组加密 186 3.3.1.2 加密方式的识别 186 3.3.1.3 ECB模式 186 3.3.1.4 CBC模式 188 3.3.1.5 Padding Oracle Attack 191 3.3.1.6 Hash Length Extension 197 3.3.1.7 伪随机数 200 3.3.1.8 密码学小结 202 3.3.2 Web中的逆向工程 202 3.3.2.1 Python 202 3.3.2.2 PHP 203 3.3.2.3 JavaScript 206 3.4 逻辑漏洞 207 3.4.1 常见的逻辑漏洞 207 3.4.2 CTF中的逻辑漏洞 211 3.4.3 逻辑漏洞小结 212 小结 212 第4章 APK 213 4.1 Android开发基础 213 4.1.1 Android四大组件 213 4.1.2 APK文件结构 214 4.1.3 DEX文件格式 214 4.1.4 Android API 215 4.1.5 Android示例代码 216 4.2 APK逆向工具 217 4.2.1 JEB 217 4.2.2 IDA 219 4.2.3 Xposed Hook 220 4.2.4 Frida Hook 222 4.3 APK逆向之反调试 224 4.4 APK逆向之脱壳 224 4.4.1 注入进程Dump内存 224 4.4.2 修改源码脱壳 225 4.4.3 类重载和DEX重组 227 4.5 APK真题解析 227 4.5.1 Ollvm混淆Native App逆向(NJCTF 2017) 227 4.5.2 反调试及虚拟机检测(XDCTF 2016) 230 小结 232 第5章 逆向工程 233 5.1 逆向工程基础 233 5.1.1 逆向工程概述 233 5.1.2 可执行文件 233 5.1.3 汇编语言基本知识 234 5.1.4 常用工具介绍 239 5.2 静态分析 243 5.2.1 IDA使用入门 243 5.2.2 HexRays反编译器入门 249 5.2.3 IDA和HexRays进阶 254 5.3 动态调试和分析 258 5.3.1 调试的基本原理 258 5.3.2 OllyDBG和x64DBG调试 258 5.3.3 GDB调试 264 5.3.4 IDA调试器 265 5.4 常见算法识别 273 5.4.1 特征值识别 273 5.4.2 特征运算识别 274 5.4.3 第三方库识别 274 5.5 二进制代码保护和混淆 276 5.5.1 抵御静态分析 277 5.5.2 加密 280 5.5.3 反调试 289 5.5.4 浅谈ollvm 296 5.6 高级语言逆向 297 5.6.1 Rust和Go 298 5.6.2 C#和Python 301 5.6.3 C++ MFC 302 5.7 现代逆向工程技巧 303 5.7.1 符号执行 303 5.7.1.1 符号执行概述 303 5.7.1.2 angr 304 5.7.1.3 angr小结 313 5.7.2 二进制插桩 313 5.7.3 Pin 314 5.7.3.1 环境配置 314 5.7.3.2 Pintool使用 317 5.7.3.3 Pintool基本框架 317 5.7.3.4 CTF实战:记录执行指令数 319 5.7.3.5 CTF实战:记录指令轨迹 322 5.7.3.6 CTF实战:记录指令执行信息与修改内存 325 5.7.3.7 Pin小结 330 5.8 逆向中的技巧 331 5.8.1 Hook 331 5.8.2 巧妙利用程序已有代码 331 5.8.3 Dump内存 332 小结 333 第6章 PWN 335 6.1 PWN基础 335 6.1.1 什么是PWN 335 6.1.2 如何学习PWN 335 6.1.3 Linux基础知识 336 6.1.3.1 Linux中的系统与函数调用 336 6.1.3.2 ELF文件结构 337 6.1.3.3 Linux下的漏洞缓解措施 338 6.1.3.4 GOT和PLT的作用 339 6.2 整数溢出 340 6.2.1 整数的运算 340 6.2.2 整数溢出如何利用 341 6.3 栈溢出 341 6.4 返回导向编程 346 6.5 格式化字符串漏洞 350 6.5.1 格式化字符串漏洞基本原理 350 6.5.2 格式化字符串漏洞基本利用方式 352 6.5.3 格式化字符串不在栈上的利用方式 354 6.5.4 格式化字符串的一些特殊用法 357 6.5.5 格式化字符串小结 358 6.6 堆利用 358 6.6.1 什么是堆 358 6.6.2 简单的堆溢出 359 6.6.3 堆内存破坏漏洞利用 360 6.6.3.1 Glibc调试环境搭建 360 6.3.6.2 Fast Bin Attack 361 6.6.3.3 Unsorted Bin List 367 6.6.3.4 Unlink攻击 371 6.6.3.5 Large Bin Attack(0CTF heapstormII) 375 6.6.3.6 Make Life Easier:tcache 379 6.6.3.7 Glibc 2.29的tcache 380 6.7 Linux内核PWN 381 6.7.1 运行一个内核 381 6.7.2 网络配置 381 6.7.3 文件系统 382 6.7.4 初始化脚本 382 6.7.5 内核调试 383 6.7.6 分析程序 383 6.7.7 漏洞利用 384 6.7.8 PWN Linux小结 387 6.7.9 Linux内核PWN源代码 387 6.8 Windows系统的PWN 389 6.8.1 Windows的权限管理 390 6.8.2 Windows的调用约定 390 6.8.3 Windows的漏洞缓解机制 391 6.8.4 Windows的PWN技巧 393 6.9 Windows内核PWN 394 6.9.1 关于Windows操作系统 394 6.9.1.1 80386和保护模式 394 6.9.1.2 Windows操作系统寻址 395 6.9.1.3 Windows操作系统架构 403 6.9.1.4 Windows内核调试环境 404 6.9.2 Windows内核漏洞 407 6.9.2.1 简单的Windows驱动开发入门 408 6.9.2.2 编写栈溢出示例 411 6.9.2.3 编写任意地址写示例 413 6.9.2.4 加载内核驱动程序 414 6.9.2.5 Windows 7内核漏洞利用 416 6.9.2.6 内核缓解措施与读写原语 426 6.9.3 参考与引用 431 6.10 从CTF到现实世界的PWN 431 小结 433 第7章 Crypto 435 7.1 编码 435 7.1.1 编码的概念 435 7.1.2 Base编码 436 7.1.3 其他编码 437 7.1.4 编码小结 438 7.2 古典密码 438 7.2.1 线性映射 438 7.2.2 固定替换 439 7.2.3 移位密码 440 7.2.4 古典密码小结 440 7.3 分组密码 441 7.3.1 分组密码常见工作模式 441 7.3.1.1 ECB 441 7.3.1.2 CBC 441 7.3.1.3 OFB 442 7.3.1.4 CFB 443 7.3.1.5 CTR 443 7.3.2 费斯妥密码和DES 444 7.3.2.1 费斯妥密码 444 7.3.2.2 DES 445 7.3.2.3 例题 447 7.3.3 AES 449 7.3.3.1 有限域 449 7.3.3.2 Rijndael密钥生成 451 7.3.3.3 AES步骤 452 7.3.3.4 常见攻击 453 7.4 流密码 457 7.4.1 线性同余生成器(LCG) 457 7.4.1.1 由已知序列破译LCG 458 7.4.1.2 攻破Linux Glibc的rand()函数-1 460 7.4.2 线性反馈移位寄存器(LFSR) 460 7.4.2.1 由已知序列破译LFSR 461 7.4.2.2 攻破Linux glibc的rand()函数-2 461 7.4.3 RC4 463 7.5 公钥密码 464 7.5.1 公钥密码简介 464 7.5.2 RSA 464 7.5.2.1 RSA简介 464 7.5.2.2 RSA的常见攻击 465 7.5.3 离散对数相关密码学 470 7.5.3.1 ElGamal和ECC 470 7.5.3.2 离散对数的计算 470 7.6 其他常见密码学应用 472 7.6.1 Diffie-Hellman密钥交换 472 7.6.2 Hash长度扩展攻击 473 7.6.3 Shamir门限方案 474 小结 475 第8章 智能合约 476 8.1 智能合约概述 476 8.1.1 智能合约介绍 476 8.1.2 环境和工具 476 8.2 以太坊智能合约题目实例 477 8.2.1 “薅羊毛” 477 8.2.2 Remix的使用 482 8.2.3 深入理解以太坊区块链 484 小结 488 第9章 Misc 489 9.1 隐写术 490 9.1.1 直接附加 490 9.1.2 EXIF 492 9.1.3 LSB 494 9.1.4 盲水印 497 9.1.5 隐写术小结 498 9.2 压缩包加密 498 9.3 取证技术 499 9.3.1 流量分析 500 9.3.1.1 Wireshark和Tshark 500 9.3.1.2 流量分析常见操作 501 9.3.1.3 特殊种类的流量包分析 504 9.3.1.4 流量包分析小结 505 9.3.2 内存镜像取证 505 9.3.2.1 内存取证介绍 505 9.3.2.2 内存取证常见操作 505 9.3.2.3 内存取证小结 507 9.3.3 磁盘镜像取证 507 9.3.3.1 磁盘镜像介绍 507 9.3.3.2 磁盘取证常见操作 507 9.3.3.3 磁盘取证小结 509 小结 509 第10章 代码审计 510 10.1 PHP代码审计 510 10.1.1 环境搭建 510 10.1.2 审计流程 517 10.1.3 案例 527 10.2 Java代码审计 536 10.2.1 学习经验 536 10.2.2 环境搭建 538 10.2.3 反编译工具 540 10.2.4 Servlet简介 541 10.2.5 Serializable简介 542 10.2.6 反序列化漏洞 545 10.2.6.1 漏洞概述 545 10.2.6.2 漏洞利用形式 546 10.2.7 表达式注入 552 10.2.7.1 表达式注入概述 552 10.2.7.2 表达式注入漏洞特征 552 10.2.7.3 表达式结构概述 553 10.2.7.5 S2-045简要分析 555 10.2.7.6 表达式注入小结 558 10.2.8 Java Web漏洞利用方式 558 10.2.8.1 JNDI注入 558 10.2.8.2 反序列化利用工具ysoserial/marshalsec 563 10.2.8.3 Java Web漏洞利用方式小结 566 小结 566 CTF之线下赛 第11章 AWD 571 11.1 比赛前期准备 571 11.2 比赛技巧 573 11.2.1 如何快速反应 573 11.2.2 如何优雅、持续地拿flag 574 11.2.3 优势和劣势 577 11.3 流量分析 578 11.4 漏洞修复 578 小结 579 第12章 靶场渗透 580 12.1 打造渗透环境 580 12.1.1 Linux下Metasploit的安装和使用 580 12.1.2 Linux下Nmap的安装和使用 584 12.1.3 Linux下Proxychains的安装和使用 586 12.1.4 Linux下Hydra的安装和使用 587 12.1.5 Windows下PentestBox的安装 588 12.1.6 Windows下Proxifier的安装 588 12.2 端口转发和代理 589 12.2.1 端口转发 592 12.2.2 Socks代理 597 12.3 常见漏洞利用方式 598 12.3.1 ms08-067 598 12.3.2 ms14-068 599 12.3.3 ms17-010 600 12.4 获取认证凭证 601 12.4.1 获取明文身份凭证 602 12.4.1.1 LSA Secrets 602 12.4.1.2 LSASS Process 604 12.4.1.3 LSASS Protection bypass 605 12.4.1.4 Credential Manager 606 12.4.1.5 在用户文件中寻找身份凭证Lazange 607 12.4.2 获取Hash身份凭证 607 12.4.2.1 通过SAM数据库获取本地用户Hash凭证 607 12.4.2.2 通过域控制器的NTDS.dit文件 609 12.5 横向移动 611 12.5.1 Hash传递 611 12.5.2 票据传递 613 12.5.2.1 Kerberos认证 613 12.5.2.2 金票据 614 12.5.2.3 银票据 615 12.6 靶场渗透案例 618 12.6.1 第13届CUIT校赛渗透题目 618 12.6.2 Defcon China靶场题 625 12.6.3 PWNHUB深入敌后 632 小结 636 CTF之团队建设 第13章 我们的战队 641 13.1 无中生有,有生无穷 641 13.2 上下而求索 642 13.3 多面发展的Nu1L战队 643 13.3.1 承办比赛 643 13.3.2 空指针社区 643 13.3.3 安全会议演讲 644 13.4 人生的选择 644 13.5 战队队长的话 646 小结 647

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个