为你推荐
内容简介
序——做网络安全竞赛高质量发展的推动者
序——在网络安全实战中培养人才
序——安全竞赛的魅力与价值
前言
CTF之线上赛
第1章 Web入门
1.1 举足轻重的信息搜集
1.1.1 信息搜集的重要性
1.1.2 信息搜集的分类
1.1.2.1 敏感目录泄露
1.1.2.2 敏感备份文件
1.1.2.3 Banner识别
1.1.3 从信息搜集到题目解决
1.2 CTF中的SQL注入
1.2.1 SQL注入基础
1.2.1.1 数字型注入和UNION注入
1.2.1.2 字符型注入和布尔盲注
1.2.1.3 报错注入
1.2.2 注入点
1.2.2.1 SELECT注入
1.2.2.2 INSERT注入
1.2.2.3 UPDATE注入
1.2.2.4 DELETE注入
1.2.3 注入和防御
1.2.3.1 字符替换
1.2.3.2 逃逸引号
1.2.4 注入的功效
1.2.5 SQL注入小结
1.3 任意文件读取漏洞
1.3.1 文件读取漏洞常见触发点
1.3.1.1 Web语言
1.3.1.2 中间件/服务器相关
1.3.1.3 客户端相关
1.3.2 文件读取漏洞常见读取路径
1.3.2.1 Linux
1.3.2.2 Windows
1.3.3 文件读取漏洞例题
1.3.3.1 兵者多诡(HCTF 2016)
1.3.3.2 PWNHUB-Classroom
1.3.3.3 Show me the shell I(TCTF/0CTF 2018 Final)
1.3.3.4 BabyIntranet I(SCTF 2018)
1.3.3.5 SimpleVN(BCTF 2018)
1.3.3.6 Translate(Google CTF 2018)
1.3.3.7 看番就能拿Flag(PWNHUB)
1.3.3.8 2013那年(PWNHUB)
1.3.3.9 Comment(网鼎杯2018线上赛)
1.3.3.10 方舟计划(CISCN 2017)
1.3.3.11 PrintMD(RealWorldCTF 2018线上赛)
1.3.3.12 粗心的佳佳(PWNHUB)
1.3.3.13 教育机构(强网杯2018线上赛)
1.3.3.14 Magic Tunnel(RealworldCTF 2018线下赛)
1.3.3.15 Can you find me?(WHUCTF 2019,武汉大学校赛)
小结
第2章 Web进阶
2.1 SSRF漏洞
2.1.1 SSRF的原理解析
2.1.2 SSRF漏洞的寻找和测试
2.1.3 SSRF漏洞攻击方式
2.1.3.1 内部服务资产探测
2.1.3.2 使用Gopher协议扩展攻击面
2.1.3.3 自动组装Gopher
2.1.4 SSRF的绕过
2.1.4.1 IP的限制
2.1.4.2 302跳转
2.1.4.3 URL的解析问题
2.1.4.4 DNS Rebinding
2.1.5 CTF中的SSRF
2.2 命令执行漏洞
2.2.1 命令执行的原理和测试方法
2.2.1.1 命令执行原理
2.2.1.2 命令执行基础
2.2.1.3 命令执行的基本测试
2.2.2 命令执行的绕过和技巧
2.2.2.1 缺少空格
2.2.2.2 黑名单关键字
2.2.2.3 执行无回显
2.2.3 命令执行真题讲解
2.2.3.1 2015 HITCON BabyFirst
2.2.3.2 2017 HITCON BabyFirst Revenge
2.2.3.3 2017 HITCON BabyFirst Revenge v2
2.3 XSS的魔力
2.3.1 XSS漏洞类型
2.3.2 XSS的tricks
2.3.3 XSS过滤和绕过
2.3.4 XSS绕过案例
2.4 Web文件上传漏洞
2.4.1 基础文件上传漏洞
2.4.2 截断绕过上传限制
2.4.2.1 00截断
2.4.2.2 转换字符集造成的截断
2.4.3 文件后缀黑名单校验绕过
2.4.3.1 上传文件重命名
2.4.3.2 上传文件不重命名
2.4.4 文件后缀白名单校验绕过
2.4.4.1 Web服务器解析漏洞
2.4.4.2 APACHE解析漏洞
2.4.5 文件禁止访问绕过
2.4.5.1.htaccess禁止脚本文件执行绕过
2.4.5.2 文件上传到OSS
2.4.5.3 配合文件包含绕过
2.4.5.4 一些可被绕过的Web配置
2.4.6 绕过图片验证实现代码执行
2.4.7 上传生成的临时文件利用
2.4.8 使用file_put_contents实现文件上传
2.4.9 ZlP上传带来的上传问题
小结
第3章 Web拓展
3.1 反序列化漏洞
3.1.1 PHP反序列化
3.1.1.1 常见反序列化
3.1.1.2 原生类利用
3.1.1.3 Phar反序列化
3.1.1.4 小技巧
3.1.2 经典案例分析
3.2 Python的安全问题
3.2.1 沙箱逃逸
3.2.1.1 关键词过滤
3.2.1.2 花样import
3.2.1.3 使用继承等寻找对象
3.2.1.4 eval类的代码执行
3.2.2 格式化字符串
3.2.2.1 最原始的%
3.2.2.2 format方法相关
3.2.2.3 Python 3.6中的f字符串
3.2.3 Python模板注入
3.2.4 urllib和SSRF
3.2.4.1 CVE-2016-5699
3.2.4.2 CVE-2019-9740
3.2.5 Python反序列化
3.2.6 Python XXE
3.2.7 sys.audit
3.2.8 CTF Python案例
3.2.8.1 皇家线上赌场(SWPU 2018)
3.2.8.2 mmmmy(网鼎杯2018线上赛)
3.3 密码学和逆向知识
3.3.1 密码学知识
3.3.1.1 分组加密
3.3.1.2 加密方式的识别
3.3.1.3 ECB模式
3.3.1.4 CBC模式
3.3.1.5 Padding Oracle Attack
3.3.1.6 Hash Length Extension
3.3.1.7 伪随机数
3.3.1.8 密码学小结
3.3.2 Web中的逆向工程
3.3.2.1 Python
3.3.2.2 PHP
3.3.2.3 JavaScript
3.4 逻辑漏洞
3.4.1 常见的逻辑漏洞
3.4.2 CTF中的逻辑漏洞
3.4.3 逻辑漏洞小结
小结
第4章 APK
4.1 Android开发基础
4.1.1 Android四大组件
4.1.2 APK文件结构
4.1.3 DEX文件格式
4.1.4 Android APl
4.1.5 Android示例代码
4.2 APK逆向工具
4.2.1 JEB
4.2.2 lDA
4.2.3 Xposed Hook
4.2.4 Frida Hook
4.3 APK逆向之反调试
4.4 APK逆向之脱壳
4.4.1 注入进程Dump内存
4.4.2 修改源码脱壳
4.4.3 类重载和DEX重组
4.5 APK真题解析
4.5.1 ollvm混淆Native App逆向(NJCTF 2017)
4.5.2 反调试及虚拟机检测(XDCTF 2016)
小结
第5章 逆向工程
5.1 逆向工程基础
5.1.1 逆向工程概述
5.1.2 可执行文件
5.1.3 汇编语言基本知识
5.1.4 常用工具介绍
5.2 静态分析
5.2.1 lDA使用入门
5.2.2 HexRays反编译器入门
5.2.3 lDA和HexRays进阶
5.3 动态调试和分析
5.3.1 调试的基本原理
5.3.2 OllyDBG和x64DBG调试
5.3.3 GDB调试
5.3.4 lDA调试器
5.4 常见算法识别
5.4.1 特征值识别
5.4.2 特征运算识别
5.4.3 第三方库识别
5.5 二进制代码保护和混淆
5.5.1 抵御静态分析
5.5.2 加密
5.5.3 反调试
5.5.4 浅谈ollvm
5.6 高级语言逆向
5.6.1 Rust和Go
5.6.2 C#和Python
5.6.3 C++MFC
5.7 现代逆向工程技巧
5.7.1 符号执行
5.7.1.1 符号执行概述
5.7.1.2 angr
5.7.1.3 angr小结
5.7.2 二进制插桩
5.7.3 Pin
5.7.3.1 环境配置
5.7.3.2 Pintool使用
5.7.3.3 Pintool基本框架
5.7.3.4 CTF实战:记录执行指令数
5.7.3.5 CTF实战:记录指令轨迹
5.7.3.6 CTF实战:记录指令执行信息与修改内存
5.7.3.7 Pin小结
5.8 逆向中的特殊技巧
5.8.1 Hook
5.8.2 巧妙利用程序已有代码
5.8.3 Dump内存
小结
第6章 PWN
6.1 PWN基础
6.1.1 什么是PWN
6.1.2 如何学习PWN
6.1.3 Linux基础知识
6.1.3.1 Linux中的系统与函数调用
6.1.3.2 ELF文件结构
6.1.3.3 Linux下的漏洞缓解措施
6.1.3.4 GOT和PLT的作用
6.2 整数溢出
6.2.1 整数的运算
6.2.2 整数溢出如何利用
6.3 栈溢出
6.4 返回导向编程
6.5 格式化字符串漏洞
6.5.1 格式化字符串漏洞基本原理
6.5.2 格式化字符串漏洞基本利用方式
6.5.3 格式化字符串不在栈上的利用方式
6.5.4 格式化字符串的一些特殊用法
6.5.5 格式化字符串小结
6.6 堆利用
6.6.1 什么是堆
6.6.2 简单的堆溢出
6.6.3 堆内存破坏漏洞利用
6.6.3.1 Glibc调试环境搭建
6.3.6.2 Fast Bin Attack
6.6.3.3 Unsorted Bin List
6.6.3.4 Unlink攻击
6.6.3.5 Large Bin Attack(0CTF heapstormII)
6.6.3.6 Make Life Easier:tcache
6.6.3.7 Glibc 2.29的tcache
6.7 Linux内核PWN
6.7.1 运行一个内核
6.7.2 网络配置
6.7.3 文件系统
6.7.4 初始化脚本
6.7.5 内核调试
6.7.6 分析程序
6.7.7 漏洞利用
6.7.8 PWN Linux小结
6.7.9 Linux内核PWN源代码
6.8 Windows系统的PWN
6.8.1 Windows的权限管理
6.8.2 Windows的调用约定
6.8.3 Windows的漏洞缓解机制
6.8.4 Windows的PWN技巧
6.9 Windows内核PWN
6.9.1 关于Windows操作系统
6.9.1.1 80386和保护模式
6.9.1.2 Windows操作系统寻址
6.9.1.3 Windows操作系统架构
6.9.1.4 Windows内核调试环境
6.9.2 Windows内核漏洞
6.9.2.1 简单的Windows驱动开发入门
6.9.2.2 编写栈溢出示例
6.9.2.3 编写任意地址写示例
6.9.2.4 加载内核驱动程序
6.9.2.5 Windows 7内核漏洞利用
6.9.2.6 内核缓解措施与读写原语
6.9.3 参考与引用
6.10 从CTF到现实世界的PWN
小结
第7章 Crypto
7.1 编码
7.1.1 编码的概念
7.1.2 Base编码
7.1.3 其他编码
7.1.4 编码小结
7.2 古典密码
7.2.1 线性映射
7.2.2 固定替换
7.2.3 移位密码
7.2.4 古典密码小结
7.3 分组密码
7.3.1 分组密码常见工作模式
7.3.1.1 ECB
7.3.1.2 CBC
7.3.1.3 OFB
7.3.1.4 CFB
7.3.1.5 CTR
7.3.2 费斯妥密码和DES
7.3.2.1 费斯妥密码
7.3.2.2 DES
7.3.2.3 例题
7.3.3 AES
7.3.3.1 有限域
7.3.3.2 Rijndael密钥生成
7.3.3.3 AES步骤
7.3.3.4 常见攻击
7.4 流密码
7.4.1 线性同余生成器(LCG)
7.4.1.1 由已知序列破译LCG
7.4.1.2 攻破Linux Glibc的rand()函数-1
7.4.2 线性反馈移位寄存器(LFSR)
7.4.2.1 由已知序列破译LFSR
7.4.2.2 攻破Linux glibc的rand()函数-2
7.4.3 RC4
7.5 公钥密码
7.5.1 公钥密码简介
7.5.2 RSA
7.5.2.1 RSA简介
7.5.2.2 RSA的常见攻击
7.5.3 离散对数相关密码学
7.5.3.1 ElGamal和ECC
7.5.3.2 离散对数的计算
7.6 其他常见密码学应用
7.6.1 Diffie-Hellman密钥交换
7.6.2 Hash长度扩展攻击
7.6.3 Shamir门限方案
小结
第8章 智能合约
8.1 智能合约概述
8.1.1 智能合约介绍
8.1.2 环境和工具
8.2 以太坊智能合约题目示例
8.2.1 “薅羊毛”
8.2.2 Remix的使用
8.2.3 深入理解以太坊区块链
小结
第9章 Misc
9.1 隐写术
9.1.1 直接附加
9.1.2 EXlF
9.1.3 LSB
9.1.4 盲水印
9.1.5 隐写术小结
9.2 压缩包加密
9.3 取证技术
9.3.1 流量分析
9.3.1.1 Wireshark和Tshark
9.3.1.2 流量分析常见操作
9.3.1.3 特殊种类的流量包分析
9.3.1.4 流量包分析小结
9.3.2 内存镜像取证
9.3.2.1 内存镜像取证介绍
9.3.2.2 内存镜像取证常见操作
9.3.2.3 内存镜像取证小结
9.3.3 磁盘镜像取证
9.3.3.1 磁盘镜像取证介绍
9.3.3.2 磁盘镜像取证常见操作
9.3.3.3 磁盘镜像取证小结
小结
第10章 代码审计
10.1 PHP代码审计
10.1.1 环境搭建
10.1.2 审计流程
10.1.3 案例
10.2 Java代码审计
10.2.1 学习经验
10.2.2 环境搭建
10.2.3 反编译工具
10.2.4 Servlet简介
10.2.5 Serializable简介
10.2.6 反序列化漏洞
10.2.6.1 漏洞概述
10.2.6.2 漏洞利用形式
10.2.7 表达式注入
10.2.7.1 表达式注入概述
10.2.7.2 表达式注入漏洞特征
10.2.7.3 表达式结构概述
10.2.7.5 S2-045简要分析
10.2.7.6 表达式注入小结
10.2.8 Java Web的漏洞利用方式
10.2.8.1 JNDI注入
10.2.8.2 反序列化利用工具ysoserial/marshalsec
10.2.8.3 Java Web漏洞利用方式小结
小结
CTF之线下赛
第11章 AWD
11.1 比赛前期准备
11.2 比赛技巧
11.2.1 如何快速反应
11.2.2 如何优雅、持续地拿flag
11.2.3 优势和劣势
11.3 流量分析
11.4 漏洞修复
小结
第12章 靶场渗透
12.1 打造渗透环境
12.1.1 Linux下Metasploit的安装和使用
12.1.2 Linux下Nmap的安装和使用
12.1.3 Linux下Proxychains的安装和使用
12.1.4 Linux下Hydra的安装和使用
12.1.5 Windows下PentestBox的安装
12.1.6 Windows下Proxifier的安装
12.2 端口转发和代理
12.2.1 端口转发
12.2.2 Socks代理
12.3 常见漏洞利用方式
12.3.1 ms08-067
12.3.2 ms14-068
12.3.3 ms17-010
12.4 获取认证凭证
12.4.1 获取明文身份凭证
12.4.1.1 LSA Secrets
12.4.1.2 LSASS Process
12.4.1.3 LSASS Protection bypass
12.4.1.4 Credential Manager
12.4.1.5 在用户文件中寻找身份凭证Lazange
12.4.2 获取Hash身份凭证
12.4.2.1 通过SAM数据库获取本地用户Hash凭证
12.4.2.2 通过域控制器的NTDS.dit文件
12.5 横向移动
12.5.1 Hash传递
12.5.2 票据传递
12.5.2.1 Kerberos认证
12.5.2.2 金票据
12.5.2.3 银票据
12.6 靶场渗透案例
12.6.1 第13届CUlT校赛渗透题目
12.6.2 DefCon China靶场题
12.6.3 PWNHUB深入敌后
小结
CTF之团队建设
第13章 我们的战队
13.1 无中生有,有生无穷
13.2 上下而求索
13.3 多面发展的Nu1L战队
13.3.1 承办比赛
13.3.2 空指针社区
13.3.3 安全会议演讲
13.4 人生的选择
13.5 战队队长的话
小结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜