「本次图书由电子工业出版社博文视点赞助」
前几天在“再聊CTF书籍”介绍过《CTF竞赛权威指南(Pwn篇)》一书,今天刚好从出版社那边要到5本书,全送大家。
下次有机会的话,我争取搞几本其它书籍给大家。
关注本公众号,点击下方的抽奖小程序参考即可,周日(3月14日)18点开奖。
你可以试着转发分享看能不能提高中奖率。
此书之前已介绍过,如果你想了解更多信息,或者想自己购买,都可以点击下方的京东链接查看。
这里最后我就放个书籍目录,方便你们参考,相信懂的人自然懂。
附目录:
第1章 CTF简介1
1.1 赛事介绍1
1.1.1 赛事起源1
1.1.2 竞赛模式1
1.1.3 竞赛内容2
1.2 知名赛事及会议3
1.2.1 网络安全竞赛3
1.2.2 网络安全会议5
1.2.3 网络安全学术会议6
1.3 学习经验6
1.3.1 二进制安全入门6
1.3.2 CTF经验8
1.3.3 对安全从业者的建议8
参考资料10
第2章 二进制文件11
2.1 从源代码到可执行文件11
2.1.1 编译原理11
2.1.2 GCC编译过程12
2.1.3 预处理阶段13
2.1.4 编译阶段14
2.1.5 汇编阶段15
2.1.6 链接阶段15
2.2 ELF文件格式16
2.2.1 ELF文件的类型16
2.2.2 ELF文件的结构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
参考资料33
第3章 汇编基础34
3.1 CPU架构与指令集34
3.1.1 指令集架构34
3.1.2 CISC与RISC对比35
3.2 x86/x64汇编基础36
3.2.1 CPU操作模式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
参考资料44
第4章 Linux安全机制45
4.1 Linux基础45
4.1.1 常用命令45
4.1.2 流、管道和重定向46
4.1.3 根目录结构47
4.1.4 用户组及文件权限47
4.1.5 环境变量49
4.1.6 procfs文件系统51
4.1.7 字节序52
4.1.8 调用约定53
4.1.9 核心转储54
4.1.10 系统调用55
4.2 Stack Canaries58
4.2.1 简介58
4.2.2 实现61
4.2.3 NJCTF 2017:messager63
4.2.4 sixstars CTF 2018:babystack65
4.3 No-eXecute69
4.3.1 简介69
4.3.2 实现70
4.3.3 示例73
4.4 ASLR和PIE75
4.4.1 ASLR75
4.4.2 PIE76
4.4.3 实现77
4.4.4 示例79
4.5 FORTIFY_SOURCE83
4.5.1 简介83
4.5.2 实现84
4.5.3 示例86
4.5.4 安全性89
4.6 RELRO90
4.6.1 简介90
4.6.2 示例90
4.6.3 实现93
参考资料94
第5章 分析环境搭建96
5.1 虚拟机环境96
5.1.1 虚拟化与虚拟机管理程序96
5.1.2 安装虚拟机97
5.1.3 编译debug版本的glibc98
5.2 Docker环境100
5.2.1 容器与Docker100
5.2.2 Docker安装及使用101
5.2.3 Pwn题目部署102
参考资料103
第6章 分析工具104
6.1 IDA Pro104
6.1.1 简介104
6.1.2 基本操作105
6.1.3 远程调试108
6.1.4 IDAPython110
6.1.5 常用插件114
6.2 Radare2115
6.2.1 简介及安装115
6.2.2 框架组成及交互方式115
6.2.3 命令行工具118
6.2.4 r2命令122
6.3 GDB125
6.3.1 组成架构125
6.3.2 工作原理125
6.3.3 基本操作127
6.3.4 增强工具130
6.4 其他常用工具132
6.4.1 dd133
6.4.2 file133
6.4.3 ldd134
6.4.4 objdump134
6.4.5 readelf135
6.4.6 socat136
6.4.7 strace<race136
6.4.8 strip137
6.4.9 strings138
6.4.10 xxd138
参考资料139
第7章 漏洞利用开发141
7.1 shellcode开发141
7.1.1 shellcode的基本原理141
7.1.2 编写简单的shellcode141
7.1.3 shellcode变形143
7.2 Pwntools145
7.2.1 简介及安装145
7.2.2 常用模块和函数145
7.3 zio152
7.3.1 简介及安装152
7.3.2 使用方法153
参考资料155
第8章 整数安全156
8.1 计算机中的整数156
8.2 整数安全漏洞157
8.2.1 整数溢出157
8.2.2 漏洞多发函数158
8.2.3 整数溢出示例159
参考资料161
第9章 格式化字符串162
9.1 格式化输出函数162
9.1.1 变参函数162
9.1.2 格式转换162
9.2 格式化字符串漏洞164
9.2.1 基本原理164
9.2.2 漏洞利用166
9.2.3 fmtstr模块174
9.2.4 HITCON CMT 2017:pwn200176
9.2.5 NJCTF 2017:pingme178
参考资料182
第10章 栈溢出与ROP183
10.1 栈溢出原理183
10.1.1 函数调用栈183
10.1.2 危险函数186
10.1.3 ret2libc186
10.2 返回导向编程187
10.2.1 ROP简介187
10.2.2 ROP的变种189
10.2.3 示例191
10.3 Blind ROP192
10.3.1 BROP原理192
10.3.2 HCTF 2016:brop193
10.4 SROP200
10.4.1 SROP原理200
10.4.2 pwntools srop模块204
10.4.3 Backdoor CTF 2017:Fun Signals204
10.5 stack pivoting206
10.5.1 stack pivoting原理206
10.5.2 GreHack CTF 2017:beerfighter209
10.6 ret2dl-resolve213
10.6.1 ret2dl-resolve原理213
10.6.2 XDCTF 2015:pwn200217
参考资料222
第11章 堆利用224
11.1 glibc堆概述224
11.1.1 内存管理与堆224
11.1.2 重要概念和结构体226
11.1.3 各类bin介绍229
11.1.4 chunk相关源码231
11.1.5 bin相关源码235
11.1.6 malloc_consolidate()函数237
11.1.7 malloc()相关源码239
11.1.8 free()相关源码248
11.2 TCache机制251
11.2.1 数据结构251
11.2.2 使用方法252
11.2.3 安全性分析255
11.2.4 HITB CTF 2018:gundam257
11.2.5 BCTF 2018:House of Atum263
11.3 fastbin二次释放268
11.3.1 fastbin dup268
11.3.2 fastbin dup consolidate273
11.3.3 0CTF 2017:babyheap275
11.4 house of spirit283
11.4.1 示例程序284
11.4.2 LCTF 2016:pwn200287
11.5 不安全的unlink291
11.5.1 unsafe unlink292
11.5.2 HITCON CTF 2016:Secret Holder295
11.5.3 HITCON CTF 2016:Sleepy Holder303
11.6 off-by-one307
11.6.1 off-by-one307
11.6.2 poison null byte310
11.6.3 ASIS CTF 2016:b00ks313
11.6.4 Plaid CTF 2015:PlaidDB320
11.7 house of einherjar325
11.7.1 示例程序325
11.7.2 SECCON CTF 2016:tinypad328
11.8 overlapping chunks336
11.8.1 扩展被释放块336
11.8.2 扩展已分配块339
11.8.3 hack.lu CTF 2015:bookstore342
11.8.4 0CTF 2018:babyheap349
11.9 house of force353
11.9.1 示例程序353
11.9.2 BCTF 2016:bcloud356
11.10 unsorted bin与large bin攻击363
11.10.1 unsorted bin into stack363
11.10.2 unsorted bin attack367
11.10.3 large bin攻击370
11.10.4 0CTF 2018:heapstorm2374
参考资料381
第12章 Pwn技巧383
12.1 one-gadget383
12.1.1 寻找one-gadget383
12.1.2 ASIS CTF Quals 2017:Start hard385
12.2 通用gadget及Return-to-csu388
12.2.1 Linux程序的启动过程388
12.2.2 Return-to-csu390
12.2.3 LCTF 2016:pwn100392
12.3 劫持hook函数395
12.3.1 内存分配hook396
12.3.2 0CTF 2017 - babyheap397
12.4 利用DynELF泄露函数地址401
12.4.1 DynELF模块401
12.4.2 DynELF原理402
12.4.3 XDCTF 2015:pwn200403
12.4.4 其他泄露函数406
12.5 SSP Leak409
12.5.1 SSP409
12.5.2 __stack_chk_fail()411
12.5.3 32C3 CTF 2015:readme412
12.5.4 34C3 CTF 2017:readme_revenge416
12.6 利用environ泄露栈地址422
12.7 利用_IO_FILE结构429
12.7.1 FILE结构体429
12.7.2 FSOP431
12.7.3 FSOP(libc-2.24版本)433
12.7.4 HITCON CTF 2016:House of Orange438
12.7.5 HCTF 2017:babyprintf445
12.8 利用vsyscall449
12.8.1 vsyscall和vDSO449
12.8.2 HITB CTF 2017:1000levels451
参考资料456