作者简介
FlappyPig战队,靠前老牌知名CTF战队,曾获数十个各级CTF竞赛冠亚季军,具备靠前CTF竞赛水准,具备丰富的CTF参赛经验。先后获得XCTF联赛总优选、XNUCA总决赛优选、CISCN优选、TCTF/0CTF(Defcon外卡赛)优选、WCTF世界黑客大师挑战赛季军,连续三年闯进Defcon决赛,Defcon优选成绩0名。战队开发维护了CTFrank网站进行了CTF赛事的rank评级和推荐。 现在以r3kapig联合战队的方式参赛。 战队成员挖掘并披露漏洞获得CVE编号上百枚,向各类SRC报备漏洞数百个。战队成员在Geekpwn、天府杯、PWN2OWN等漏洞挖掘类竞赛也取得了不错的成绩。 战队主要成员目前就职于阿里巴巴、腾讯、京东等,从事网络安全、漏洞挖掘相关工作。在网络安全竞赛、漏洞挖掘、渗透测试等领域具有很好深厚的积累,擅长Web、应用层软件、操作系统、区块链、嵌入式等多领域的漏洞挖掘与利用。
目录
前言
篇 CTF之Web
章 常用工具安装及使用
1.1 Burp Suite
1.2 Sqlmap
1.3 浏览器与插件
1.4 Nmap
第2章 SQL注入攻击
2.1 什么是SQL注入
2.2 可以联合查询的SQL注入
2.3 报错注入
2.4 Bool盲注
2.5 时间盲注
2.6 二次注入
2.7 limit之后的注入
2.8 注入点的位置及发现
2.9 绕过
2.10 SQL读写文件
2.11 小结
第3章 跨站脚本攻击
3.1 概述
3.2 常见XSS漏洞分类
3.3 防护与绕过
3.4 危害与利用技巧
3.5 实例
第4章 服务端请求伪造
4.1 如何形成
4.2 防护绕过
4.3 危害与利用技巧
4.4 实例
第5章 利用特性进行攻击
5.1 PHP语言特性
5.1.1 弱类型
5.1.2 反序列化漏洞
5.1.3 截断
5.1.4 伪协议
5.1.5 变量覆盖
5.1.6 防护绕过
5.2 Windows系统特性
第6章 代码审计
6.1 源码泄露
6.2 代码审计的方法与技巧
第7章 条件竞争
7.1 概述
7.2 条件竞争问题分析及测试
第8章 案例解析
8.1 NSCTF 2015 Web实例
8.2 湖湘杯2016线上选拔赛Web实例
8.3 0CTF 2017 Web实例
8.4 2019 WCTF大师赛赛题剖析:P-door
本篇小结
第二篇 CTF之Reverse
第9章 Reverse概述
9.1 逆向分析的主要方法
9.2 汇编指令体系结构
9.2.1 x86指令体系
9.2.2 x64指令体系
9.3 逆向分析工具介绍
9.3.1 反汇编和反编译工具
9.3.2 调试器
9.3.3 Trace类工具
0章 Reverse分析
10.1 常规逆向分析流程
10.1.1 关键代码定位
10.1.2 常见加密算法识别
10.1.3 求解flag
10.2 自动化逆向
10.2.1 IDAPython
10.2.2 PythonGdb
10.2.3 pydbg
10.2.4 Angr
10.3 干扰分析技术及破解方法
10.3.1 花指令
10.3.2 反调试
10.3.3 加壳
10.3.4 控制流混淆
10.3.5 双进程保护
10.3.6 虚拟机保护
10.4 脚本语言的逆向
10.4.1 .NET程序逆向
10.4.2 Python程序逆向
10.4.3 Java程序逆向
本篇小结
第三篇 CTF之PWN
1章 PWN基础
11.1 基本工具
11.2 保护机制
11.3 PWN类型
11.4 常见利用方法
11.5 程序内存布局
11.6 真题解析
2章 栈相关漏洞
12.1 栈介绍
12.1.1 函数栈的调用机制
12.1.2 函数参数传递
12.2 栈溢出
12.2.1 基本概念
12.2.2 覆盖栈缓冲区的具体用途
12.3 栈的特殊利用
12.4 栈喷射
12.5 线程栈
12.6 真题解析
12.6.1 {ZCTF-2015}guess(PWN100)
12.6.2 {ZCTF-2015}spell(PWN300)
12.6.3 {Codegate-2015}Chess(PWN700)
12.6.4 {RCTF-2015}Welpwn(PWN200)
3章 堆相关漏洞
13.1 堆介绍
13.1.1 堆基本数据结构chunk
13.1.2 堆空闲块管理结构bin
13.1.3 malloc基本规则
13.1.4 free基本规则
13.1.5 tcache
13.2 漏洞类型
13.3 利用方法
13.3.1 最基本的堆利用
13.3.2 unlink
13.3.3 fastbin attack
13.3.4 forgotten chunk
13.3.5 house of force
13.3.6 house of spirit
13.3.7 house of orange
13.3.8 堆喷射
13.3.9 更多堆利用技巧
13.4 真题解析
4章 格式化字符串漏洞
14.1 基本概念
14.2 信息泄露与修改
14.3 额外技巧
14.4 真题解析
14.4.1 {CCTF-2016}PWN3(PWN350)
14.4.2 {RCTF-2015}nobug(PWN300)
14.4.3 {LCTF-2016}PWN200
5章 整型漏洞
15.1 宽度溢出
15.2 符号转换
15.3 数组越界
15.4 真题解析
6章 逻辑漏洞
16.1 基本概念
16.2 竞态条件漏洞
16.3 真题解析
7章 Attack&Defense模式
17.1 修补方案
17.1.1 大小修改法
17.1.2 函数替换法
17.1.3 .eh_frame段Patch法
17.1.4 其他方法
17.2 攻防策略
本篇小结
第四篇 CTF之Crypto
8章 Crypto概述
9章 编码
19.1 hex
19.2 urlencode
19.3 morsecode
19.4 jsfuck
19.5 uuencode
19.6 base家族
第20章 古典密码
20.1 移位密码
20.1.1 简单移位密码
20.1.2 曲路密码
20.1.3 云影密码
20.1.4 栅栏密码
20.2 替代密码
20.2.1 单表替代密码
20.2.2 多表替代密码
第21章 现代密码
21.1 分组密码和序列密码
21.1.1 DES/AES基本加解密
21.1.2 分组密码CBC bit翻转攻击
21.1.3 分组密码CBC选择密文攻击
21.1.4 分组密码CBC padding oracle攻击
21.1.5 Feistel结构分析
21.1.6 攻击伪随机数发生器
21.2 公钥密码
21.2.1 RSA基础
21.2.2 直接模数分解
21.2.3 费马分解和Pollard_rho分解
21.2.4 公约数模数分解
21.2.5 其他模数分解方式
21.2.6 小指数明文爆破
21.2.7 选择密文攻击
21.2.8 LLL-attack
21.2.9 Wiener Attack&Boneh Durfee Attack
21.2.10 共模攻击
21.2.11 广播攻击
21.2.12 相关消息攻击
21.2.13 DSA
21.3 哈希
21.3.1 哈希碰撞
21.3.2 哈希长度扩展攻击
第22章 真题解析
22.1 SUPEREXPRESS
22.2 VIGENERE
22.3 Revolver
22.4 Railgun
本篇小结
第五篇 CTF之APK
第23章 APK基础
23.1 Android题目类型
23.2 Android基本架构
23.2.1 Android的Dalvik虚拟机
23.2.2 Native层
23.3 ARM架构基础知识
23.3.1 函数调用/跳转指令
23.3.2 出栈入栈指令
23.3.3 保存/恢复寄存器的值
23.4 adb
23.5 APK文件格式
第24章 Dalvik层逆向分析
24.1 Dalvik基础知识
24.1.1 寄存器
24.1.2 类型
24.1.3 方法
24.1.4 指令特点
24.2 静态分析
24.2.1 使用Apktool反编译APK程序
24.2.2 使用dex2jar生成jar文件
24.2.3 使用jd-gui查看反编译的Java代码
24.2.4 使用FernFlower反编译Jar文件
24.2.5 使用Android Killer/jadx/APK Studio逆向分析平台
24.2.6 使用JEB进行静态分析
24.2.7 其他的静态分析软件
24.3 动态调试
24.3.1 使用log调试
24.3.2 smali动态调试
24.3.3 使用Xposed框架Hook进程
24.3.4 使用Frida框架Hook进程
24.4 Dalvik层混淆及加固技术
24.4.1 ProGuard混淆
24.4.2 DEX破坏
24.4.3 APK伪加密
24.4.4 APK增加数据
24.4.5 DEX隐藏
第25章 Native层逆向
25.1 Native层介绍
25.1.1 正向——使用NDK编写Native层应用
25.1.2 JNI调用特征分析
25.2 使用IDA Pro静态分析
25.3 动态调试
25.3.1 使用IDA Pro进行动态调试
25.3.2 使用GDB进行动态调试
25.3.3 使用Frida框架HOOK进程
25.4 OLLVM混淆及加固技术
25.4.1 -fla
25.4.2 -bcf
25.4.3 -sub
本篇小结
第六篇 CTF之IoT
第26章 IoT基础知识
26.1 什么是IoT
26.2 什么是嵌入式系统
26.3 嵌入式系统的基本概念
26.4 CTF中常见的IoT题型归类
第27章 IoT固件逆向工程
27.1 常见IoT架构介绍
27.2 芯片手册的寻找与阅读
27.3 使用IDA手动寻找固件入口点
27.4 寄存器地址和SRAM地址的处理方法
27.5 IDA之CPU不错选项
27.6 动态调试环境搭建
27.7 专业调试工具
27.8 反编译工具
第28章 固件结构分析
28.1 常见固件类型
28.2 Flash文件系统
28.3 固件基地址确定方法
28.4 固件分析工具
第29章 无线信号分析
29.1 无线通信基本理论介绍
29.2 常见调制方式与解调方法
29.3 Matlab在数字信号处理中的应用
第30章 经典赛题讲解
30.1 PCTF2016:Confused ARM
30.2 UCTF2016资格赛:TWI
30.3 UCTF2016决赛:Normandie
30.4 ACTF2016:4G Radio
30.5 UCTF2016资格赛:传感器(1)(2)
30.6 UCTF2016资格赛:Add
本篇小结
内容摘要
本书由国内老牌CTF战队FlappyPig撰写,战队成员曾多次荣获XCTF靠前联赛优选、TCTF/0CTF优选、WCTF世界黑客大师挑战赛季军,多次入围Defcon优选总决赛,具有丰富的实战经验。本书围绕CTF竞赛需要的安全技术、解题方法和竞赛技巧3个维度展开,旨在通过作者扎实的技术功底和丰富的竞赛经验,引领对CTF竞赛感兴趣的读者快速入门。书中依据CTF竞赛的特点,分别从Web、Reverse、PWN、Crypto、A、IoT这六个方面系统地对CTF竞赛的知识点、模式、技巧进行了深入讲解,每一篇都搭配历年真题,帮助读者加深理解。全书一共分六篇。Web篇(~8章)主要讲解CTF比赛中Web类型题目的一些基础知识点与常用的工具和插件,这些知识点和工具也可以用于部分渗透测试的实战中。Reverse篇(第9~10章)主要对CTF中逆向分析的主要方法、常用分析工具、逆向分析技术和破解方法进行讲解,帮助读者提高逆向分析能力。 PWN篇(1~17章)对PWN二进制漏洞挖掘利用的详细分析,主要讲解了针对各种漏洞的利用方法和利用技巧,作者可以结合实例题目加深理解。 Crypto篇(8~22章)对Crypto类型题目的知识和例题讲解,主要从概述、编码、古典密码、现代密码以及真题解析几个方向进行叙述。A篇(第23~25章)讲解CTF中的A的相关内容,主要从A的基础知识点、Dalvik层的逆向分析技术,以及Native层的逆向分析技术三个方面介绍A题目的寄出内容、解题方法和竞赛技巧。IoT篇(第26~30章)对IoT类型题目的讲解,内容涉及IoT、无线通信的基础知识和相关题型的解题技巧,帮助大家培养解决IoT相关题目的能力。
以下为对购买帮助不大的评价