猜你喜欢
CTF竞赛权威指南(Pwn篇)(博文视点出品)

CTF竞赛权威指南(Pwn篇)(博文视点出品)

书籍作者:杨超 ISBN:9787121399527
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:4802
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书专注于Linux二进制安全。全书包含12章, 从二进制底层开始, 结合源码详细分析了常见的二进制安全漏洞、 缓解机制以及漏洞利用方法, 并辅以分析工具和环境搭建的讲解.

本书在素材的选择上较为连续、 完整, 每个知识点均配以经典例题, 并花费了太量篇幅深入讲解,以最大程度地还原分析思路和解题过程. 读者完全可以依据本书自主、 系统性地学习, 达到举 反三的效果.

本书主要面向CTF初学者, 也适合对CTF感兴趣的人群学习.

作者简介

杨超,毕业于西安电子科技大学,L-Team成员。目前就职于中国汽研北京分院,从事车联网安全研究和工具开发工作。曾任职于海康威视、斗象科技。活跃在开源社区, GitHub:firmianay。


腾讯eee战队,腾讯安全2016年成立的一支具有国际先进技术实战能力的CTF战队。战队核心成员均来自腾讯安全科恩实验室,导师由腾讯安全科恩实验室负责人、国际著名网络安全专家吴石担任。

目前,战队成员已连续4年参与征战DEFCON决赛,并在HITCON、PlaidCTF、SECCON等世界顶级安全赛事中,不断刷新战队历史最好成绩,为国际间的技术交流与人才培养奠定基础。同时,战队还积极参与国内赛事演练,并在2018年连续荣膺中国网络安全三大国赛——“强网杯”“网鼎杯”和“护网杯”赛事冠军,成为第一个实现国赛大满贯的战队;2019年,战队再度蝉联“强网杯”线上、线下赛冠军。2020年,战队获得第四届“强网杯”亚军。


编辑推荐

Pwn被认为是CTF竞赛中体现技术实力的关键部分、也是zui难的部分。市面上虽已有相关的CTF书籍,但并无一本专注于此!《CTF竞赛权威指南(Pwn篇)》填补了这一空白。为读者透彻理解相关安全技术打开了一扇大门。

本书利用历届CTF真题,以x86/x64平台下Linux系统中的Pwn样题为例,讲述漏洞利用的基本方法和技巧。由于Linux系统本身就是一个开源系统,相关文档也比较齐全,因此,在这个平台上容易把问题讲透。把基本功练扎实了,再去学习其他平台上的漏洞利用技术,必将起到事半而功倍的效果。此外,当前被广泛使用的Android等操作系统本身就是Linux系统的变种,相关技术也很容易移植到这些系统的漏洞发掘利用中去。


前言

推荐序

近年来,在党和国家的高度重视下,网络安全行业发展迅猛,吸引了大批年轻学子和有志青年投身其中。2015年,“网络空间安全”正式成为“工学”门类下的一级学科,与此同时,不论是在高校、还是企事业单位中,CTF等类型的信息安全竞赛也开始蓬勃发展,通过竞赛涌现出了一大批高手、能手。但是竞赛中各个模块间的发展程度却参差不齐。相对而言,Web、Misc等模块发展较快,参与的选手也较多;二进制安全相关模块,如Reverse(逆向)、Mobile(此处指移动安全)等模块的选手相对就少些,而其中的Pwn模块,则参赛选手最少。究其原因,主要是因为相对其他模块,二进制安全相关模块的学习曲线更陡峭,要求选手对系统的理解更为深入。

市面上安全相关的书籍、教程汗牛充栋,与漏洞主题相关的却屈指可数。在这些书籍中,由于作者本身都是从事漏洞发掘工作的,所以相关案例多以Windows平台下的各种软件漏洞为主,其他平台为辅。但Windows平台本身内部实现机制就比较复杂,相关文档不多,且有的软件自身还会有自己私有的内存管理方法(比如微软的Office软件),在开始学习相关技能之前,所需要掌握的相关前置背景知识就够人喝一壶了。

本书另辟蹊径,利用历届的CTF真题,以x86/x64平台下Linux系统中的Pwn样题为例,讲述漏洞利用的基本方法和技巧。由于Linux系统本身就是一个开源系统,相关文档也比较齐全,因此,在这个平台上容易把问题讲透。把基本功练扎实了,再去学习其他平台上的漏洞利用技术,必将起到事半而功倍的效果。此外,当前被广泛使用的Android等操作系统本身就是Linux系统的变种,相关技术也很容易移植到这些系统的漏洞发掘利用中去。

本书的作者是业内后起之秀。书中所用的例子贴近CTF实战,讲解详尽,思路清晰,非常有助于读者理解和学习。

本书的审校者——吴石老师率领的腾讯eee战队——曾多次斩获国内外高等级竞赛的大奖,相关经验非常丰富。

本书为广大学子和从业人员学习漏洞利用技术知识提供了有益的指导。相信有志学习者,经过认真钻研,必能早日登堂入室,为我国网络安全事业的发展添砖加瓦。

——崔孝晨,《Python绝技:运用Python成为顶级黑客》、《最强Android书:架构大剖析》译者


时间回到2017年7月。

随着信息安全的发展,CTF竞赛开始引人关注。这种有趣的竞赛模式非常有助于技术切磋和快速学习。在西电信安协会(XDSEC)学长的带领下,当时的我已经接触CTF赛题有较长时间了。由于当时网上还没有比较完善和系统的资料,本着开源精神、自利利他的目的,我在GitHub上创建了一个称为“CTF-All-In-One”的项目,并给了自己第1个star。

此后,这个项目日渐完善,吸引和帮助了不少初学者,到现在已经收获了超过2100个star,在此向所有为技术分享与进步作出贡献的CTF出题人和项目贡献者们致敬!

收到刘皎老师的约稿邀请是在2018年10月,那时我刚上大四。抱着试试看的心情,我惊喜、惶恐地接受了这项挑战。接下来就是定目录,交样章,并在2019年1月签订了《约稿合同》。没想到的是,写作的道路竟如此艰难:每一章、每一节、每一个例子甚至每一个词都要细斟慢酌,生怕误人子弟。由于学业和工作上的事情较多,最初参与的两个朋友相继离开了,我本人也多次想放弃。就在这样反反复复的状态下,一直到2020年7月才完成初稿。经过几轮艰苦的校稿,终于在2020年10月签订了《出版合同》,两年时间就这样一晃过去了。

现在再回头看,本书写作的过程基本就是一个“现学现卖”的过程。我一边学习新知识,一边不断调整内容框架。在学习的路上,我曾遇到太多的分岔、踩过无数坑,正因为如此,我尽量把自己的经验写进书里,使读者可以快速获得关键技术、避免踩坑和重复劳动。所以,与其称它为一本书,倒不如说这是一座经过校对、打磨,并最终以书的形式呈现的知识库。当然,在此过程中,我也发现写作是一种非常有效的训练方式:很明显,通过梳理知识点和想法,我不仅系统掌握了相关知识,也明确了思路,对从事相关工作大有裨益。

我们将此书命名为《CTF竞赛权威指南(Pwn篇)》,是期待有更多人参与进来,拿出Web篇、Reverse篇、Crypto篇等更好的作品,让这个系列更配得上“权威”二字。信息安全是一门有趣的学科,我为自己当初的选择高兴,也希望阅读本书的你,同样为自己的选择而激动。作为一本面向初学者的书,读者中一定有不少中学生。全国中学生网络安全竞赛每年都在我的母校西安电子科技大学进行,迄今已是第三届,颇具规模。在此欢迎各位小读者报考母校的网络与信息安全学院,这里真的是一个很棒的地方!

本书的出版,要感谢我的大学室友刘晋,他早期的帮助让这个项目得以成形;感谢腾讯的吴石老师,他的推荐让本项目顺利成书、惠及更多的人;感谢吴石老师和腾讯eee战队的谢天忆、朱梦凡、马会心和刘耕铭四位老师的建议与审校,让本书的内容更上一层楼;感谢学弟槐和koocola,贡献了本书第11章的初稿;感谢湖北警官学院的谈楚瑜和MXYLR,以及其他来自GitHub的朋友的鼓励和支持;感谢电子工业出版社的刘皎老师,她认真细致的工作使本书得以高质量地呈现给读者;感谢我的父母给了我选择和发展的自由,让我在人生道路上没有后顾之忧;感谢那位不愿透露姓名的朋友,遇见你曾是青春最美好的事!感谢你们!

杨超

2020年11月于北京




目录

第1章CTF简介

1.1赛事介绍

1.1.1赛事起源

1.1.2竞赛模式

1.1.3竞赛内容

1.2知名赛事及会议

1.2.1网络安全竞赛

1.2.2网络安全会议

1.2.3网络安全学术会议

1.3学习经验

1.3.1二进制安全入门

1.3.2CTF经验8

1.3.3对安全从业者的建议8

第2章二进制文件

2.1从源代码到可执行文件11

2.1.1编译原理11

2.1.2GCC编译过程12

2.1.3预处理阶段13

2.1.4编译阶段14

2.1.5汇编阶段15

2.1.6链接阶段15

2.2ELF文件格式16

2.2.1ELF文件的类型16

2.2.2ELF文件的结构18

2.2.3可执行文件的装载24

2.3静态链接26

2.3.1地址空间分配26

2.3.2静态链接的详细过程27

2.3.3静态链接库29

2.4动态链接30

2.4.1什么是动态链接30

2.4.2位置无关代码31

2.4.3延迟绑定32

第3章汇编基础

3.1CPU架构与指令集34

3.1.1指令集架构34

3.1.2CISC与RISC对比35

3.2x86/x64汇编基础36

3.2.1CPU操作模式36

3.2.2语法风格36

3.2.3寄存器与数据类型37

3.2.4数据传送与访问38

3.2.5算术运算与逻辑运算39

3.2.6跳转指令与循环指令40

3.2.7栈与函数调用41

第4章Linux安全机制

4.1Linux基础45

4.1.1常用命令45

4.1.2流、管道和重定向46

4.1.3根目录结构47

4.1.4用户组及文件权限47

4.1.5环境变量49

4.1.6procfs文件系统51

4.1.7字节序52

4.1.8调用约定53

4.1.9核心转储54

4.1.10系统调用55

4.2StackCanaries58

4.2.1简介58

4.2.2实现61

4.2.3NJCTF2017:messager63

4.2.4sixstarsCTF2018:babystack65

4.3No-eXecute69

4.3.1简介69

4.3.2实现70

4.3.3示例73

4.4ASLR和PIE75

4.4.1ASLR75

4.4.2PIE76

4.4.3实现77

4.4.4示例79

4.5FORTIFY_SOURCE83

4.5.1简介83

4.5.2实现84

4.5.3示例86

4.5.4安全性89

4.6RELRO90

4.6.1简介90

4.6.2示例90

4.6.3实现93

第5章分析环境搭建

5.1虚拟机环境96

5.1.1虚拟化与虚拟机管理程序96

5.1.2安装虚拟机97

5.1.3编译debug版本的glibc98

5.2Docker环境100

5.2.1容器与Docker100

5.2.2Docker安装及使用101

5.2.3Pwn题目部署102


第6章分析工具

6.1IDAPro104

6.1.1简介104

6.1.2基本操作105

6.1.3远程调试108

6.1.4IDAPython110

6.1.5常用插件114

6.2Radare2115

6.2.1简介及安装115

6.2.2框架组成及交互方式115

6.2.3命令行工具118

6.2.4r2命令122

6.3GDB125

6.3.1组成架构125

6.3.2工作原理125

6.3.3基本操作127

6.3.4增强工具130

6.4其他常用工具132

6.4.1dd133

6.4.2file133

6.4.3ldd134

6.4.4objdump134

6.4.5readelf135

6.4.6socat136

6.4.7strace&ltrace136

6.4.8strip137

6.4.9strings138

6.4.10xxd138


第7章漏洞利用开发

7.1shellcode开发141

7.1.1shellcode的基本原理141

7.1.2编写简单的shellcode141

7.1.3shellcode变形143

7.2Pwntools145

7.2.1简介及安装145

7.2.2常用模块和函数145

7.3zio152

7.3.1简介及安装152

7.3.2使用方法153


第8章整数安全

8.1计算机中的整数156

8.2整数安全漏洞157

8.2.1整数溢出157

8.2.2漏洞多发函数158

8.2.3整数溢出示例159


第9章格式化字符串

9.1格式化输出函数162

9.1.1变参函数162

9.1.2格式转换162

9.2格式化字符串漏洞164

9.2.1基本原理164

9.2.2漏洞利用166

9.2.3fmtstr模块174

9.2.4HITCONCMT2017:pwn200176

9.2.5NJCTF2017:pingme178


第10章栈溢出与ROP

10.1栈溢出原理183

10.1.1函数调用栈183

10.1.2危险函数186

10.1.3ret2libc186

10.2返回导向编程187

10.2.1ROP简介187

10.2.2ROP的变种189

10.2.3示例191

10.3BlindROP192

10.3.1BROP原理192

10.3.2HCTF2016:brop193

10.4SROP200

10.4.1SROP原理200

10.4.2pwntoolssrop模块204

10.4.3BackdoorCTF2017:FunSignals204

10.5stackpivoting206

10.5.1stackpivoting原理206

10.5.2GreHackCTF2017:beerfighter209

10.6ret2dl-resolve213

10.6.1ret2dl-resolve原理213

10.6.2XDCTF2015:pwn200217


第11章堆利用

11.1glibc堆概述224

11.1.1内存管理与堆224

11.1.2重要概念和结构体226

11.1.3各类bin介绍229

11.1.4chunk相关源码231

11.1.5bin相关源码235

11.1.6malloc_consolidate()函数237

11.1.7malloc()相关源码239

11.1.8free()相关源码248

11.2TCache机制251

11.2.1数据结构251

11.2.2使用方法252

11.2.3安全性分析255

11.2.4HITBCTF2018:gundam257

11.2.5BCTF2018:HouseofAtum263

11.3fastbin二次释放268

11.3.1fastbindup268

11.3.2fastbindupconsolidate273

11.3.30CTF2017:babyheap275

11.4houseofspirit283

11.4.1示例程序284

11.4.2LCTF2016:pwn200287

11.5不安全的unlink291

11.5.1unsafeunlink292

11.5.2HITCONCTF2016:SecretHolder295

11.5.3HITCONCTF2016:SleepyHolder303

11.6off-by-one307

11.6.1off-by-one307

11.6.2poisonnullbyte310

11.6.3ASISCTF2016:b00ks313

11.6.4PlaidCTF2015:PlaidDB320

11.7houseofeinherjar325

11.7.1示例程序325

11.7.2SECCONCTF2016:tinypad328

11.8overlappingchunks336

11.8.1扩展被释放块336

11.8.2扩展已分配块339

11.8.3hack.luCTF2015:bookstore342

11.8.40CTF2018:babyheap349

11.9houseofforce353

11.9.1示例程序353

11.9.2BCTF2016:bcloud356

11.10unsortedbin与largebin攻击363

11.10.1unsortedbinintostack363

11.10.2unsortedbinattack367

11.10.3largebin攻击370

11.10.40CTF2018:heapstorm2374


第12章Pwn技巧

12.1one-gadget383

12.1.1寻找one-gadget383

12.1.2ASISCTFQuals2017:Starthard385

12.2通用gadget及Return-to-csu388

12.2.1Linux程序的启动过程388

12.2.2Return-to-csu390

12.2.3LCTF2016:pwn100392

12.3劫持hook函数395

12.3.1内存分配hook396

12.3.20CTF2017-babyheap397

12.4利用DynELF泄露函数地址401

12.4.1DynELF模块401

12.4.2DynELF原理402

12.4.3XDCTF2015:pwn200403

12.4.4其他泄露函数406

12.5SSPLeak409

12.5.1SSP409

12.5.2__stack_chk_fail()411

12.5.332C3CTF2015:readme412

12.5.434C3CTF2017:readme_revenge416

12.6利用environ泄露栈地址422

12.7利用_IO_FILE结构429

12.7.1FILE结构体429

12.7.2FSOP431

12.7.3FSOP(libc-2.24版本)433

12.7.4HITCONCTF2016:HouseofOrange438

12.7.5HCTF2017:babyprintf445

12.8利用vsyscall449

12.8.1vsyscall和vDSO449

12.8.2HITBCTF2017:1000levels451


短评

正版书籍,全5分好评!

2020-12-12 20:37:22

价格贵了点,内容也不是太丰富

2020-12-12 09:51:29

不错不错?。哈哈哈哈

2020-12-19 14:24:06

等了十几天才发货,拿到手新书就是这样。

2020-12-13 12:58:04

要成为pwn大佬呀呀 快递也挺快哦 挺好的

2020-12-25 14:39:21

第一批拿到货yes!

2020-12-14 11:13:27

作为作者以及第一批拿到货的人,来抢个第一条评论,印刷真不错!

2020-12-10 09:12:55