CTF比赛,如何上手?下面推荐两本专门针对参赛和解题的书。
每一个CTF战队的发展其实都面临着一个问题,那就是“如何传承”。作为一个联合战队,随着老成员走向工作岗位,如何用良好的机制实现新老更替,是战队管理者需要认真考虑的问题。我们也尝试过在社会上公开招募成员,但是从他们实习期的表现来看,这种方式是很难获得优秀血液的。战队在学校也做了很多招新和培养的尝试,很多学生咨询如何学习CTF。我们会耐心地询问他们的情况,然后讲述自己当时是如何学习的,并且推荐一些方法。但是我们发现,很多人并没有耐心和足够的时间学习,而是想一步登天。CTF是一门偏重于实践的学问,仅靠读一本书、一篇论文,或者学一门课是远远不够的,它需要足够的兴趣和精力,不停地做题、实战、锻炼,并没有捷径可走。
道理虽然如此,但是对于初学者来说,缺少入门指引就会感到迷茫,不知道去做什么题,也不知道去学什么。因此推荐两本书带领新人入门以及进阶CTF:
第1章 Web类赛题 1
1.1 SQL注入漏洞 1
关键字绕过 1
题目1 简单的编码绕过 3
题目2 截断绕过 5
题目3 二次注入 7
1.2 XSS漏洞 11
题目1 留言板 11
题目2 评论区 14
题目3 绕过JavaScript限制 16
1.3 命令执行漏洞 20
题目1 上传图片 20
题目2 ping命令工具 23
1.4 文件上传漏洞 26
题目1 MIME 26
题目2 PHP标签 31
1.5 信息泄露漏洞 37
题目1 CBC-ATTACK 37
题目2 robots 40
1.6 代码审计 42
题目1 散列值 42
题目2 对象注入 44
题目3 JavaScript代码审计 46
1.7 暴力破解 50
题目 MD5密码破解 50
1.8 反序列化 54
题目 messagecenter 54
1.9 综合渗透 57
题目1 命令执行 57
题目2 越权访问 62
1.10 其他Web类赛题 67
题目1 LFI 67
题目2 突破登录 71
第2章 可执行程序类赛题 75
2.1 Windows中的可执行程序 75
题目1 逆向和调试基础 75
题目2 脱壳并找出序列号 86
题目3 逆向算法分析和修改 92
2.2 Linux中的可执行程序 97
题目1 逆向分析算法解密 97
题目2 从寄存器中取得flag 102
题目3 追踪运行库和系统调用 106
题目4 反调试和反反调试 110
2.3 Android可执行程序 115
题目1 反模拟器探测和APK反编译 115
题目2 C运行库文件的逆向分析 124
题目3 libc函数的劫持 131
题目4 dex脱壳与WebView漏洞 136
2.4 Python可执行程序 143
题目1 Python字节码反编译与加密算法的暴力破解 143
题目2 Python打包二进制文件的逆向 146
题目3 深入分析Python字节码 152
2.5 .NET可执行程序 161
题目1 .NET反编译和BMP图像 161
题目2 .NET程序的反混淆和调试分析 168
第3章 PWN类赛题 175
3.1 Windows PWN 175
题目 FTP协议栈溢出漏洞 175
3.2 Linux PWN 179
题目1 静态编译软件栈溢出漏洞 179
题目2 ret2libc栈溢出漏洞 184
题目3 构造浮点型Shellcode 188
题目4 Linux下的栈溢出漏洞 193
题目5 ret2plt栈溢出漏洞 196
题目6 unlink堆溢出漏洞 198
题目7 UAF堆溢出漏洞 208
题目8 格式化字符串漏洞 216
题目9 整数溢出(1) 220
题目10 整数溢出(2) 223
题目11 Linux随机数 230
3.3 Python PWN 233
题目 Python沙盒绕过 233
第4章 PPC类赛题 239
4.1 工具编写 239
题目1 LostKey 239
题目2 addcodes 240
4.2 算法 243
题目1 Code400 243
题目2 迷宫大逃亡 248
题目3 能看到吗 251
4.3 竞速 254
题目1 百米赛跑 254
题目2 速度爆破 255
第5章 安全杂项类赛题 257
5.1 密码学 257
题目1 摩斯密码 257
题目2 恺撒密码 260
题目3 栅栏密码 262
题目4 RSA算法 263
题目5 NTLM密码 269
题目6 键盘图案密码 272
题目7 ROT13 274
其他密码学赛题 275
5.2 隐写 279
题目1 通过图片传递隐藏信息 280
题目2 文件为什么打不开 281
题目3 文字隐身 289
题目4 不是一个人在战斗 292
题目5 到处都是广告 297
题目6 最低位的艺术 301
题目7 ISG图片隐写 308
题目8 藏在声音中的密码 311
第6章 比赛介绍 314
6.1 国外CTF 314
DEFCON 314
UCSB ICTF 315
6.2 国内CTF 315
XCTF联赛 315
TCTF 315
第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
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
极限黑客攻防*3
ctf竞赛指南pwn篇*3
1.转发朋友圈保留至开奖结束!
2.屏蔽以及删除朋友圈则无效抽奖!
3.中奖者发送截图以及邮寄地址到公众号后台!
本文始发于微信公众号(Khan安全攻防实验室):福利:CTF备赛指南!(文末抽奖)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论