Skip to content

Commit 604d3a4

Browse files
Nebu1eaCnily03
andauthored
docs: update guide for week2 (#17)
Co-authored-by: Cnily03 <cnily03@outlook.com>
1 parent 548d089 commit 604d3a4

File tree

5 files changed

+149
-7
lines changed

5 files changed

+149
-7
lines changed

docs/guide/2024/index.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,18 @@ NewStar CTF 2024 是由来自 13 所高校的战队联合发起的新生入门
8989

9090
### 协办单位<Text class='desc-text' fontSize='16px' fontWeight='500' content='(以下排名不分先后)' />
9191

92-
- 中国矿业大学计算机科学与技术学院
9392
- 中国矿业大学信息化建设与管理处
94-
- 中国矿业大学开源协会
93+
- 中国矿业大学计算机科学与技术学院
9594
- 中国矿业大学计算机学院科学技术协会
96-
- 东北大学秦皇岛分校网络空间安全创新实验室
95+
- 中国矿业大学开源协会
96+
- 中国人民公安大学信息网络安全学院
9797
- 东北大学秦皇岛分校计算机与通信工程学院
98+
- 东北大学秦皇岛分校网络空间安全创新实验室
99+
- 海南大学网络空间安全协会
100+
- 广东工业大学 A&D 攻防工作室
101+
- 江南大学人工智能与计算机学院
98102
- 浙江师范大学网络安全协会
99103
- 浙江师范大学高等数学协会
100-
- 海南大学网络空间安全协会
101104

102105
### 平台支持
103106

docs/guide/2024/week1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import Container from '@/components/docs/Container.vue'
3838
这题考查的是 HTTP 报文的内容,你可能需要先了解这些内容:
3939

4040
- 什么是 Method、Header、请求体、响应体、状态码
41-
- Cookie 是什么?他有什么作用和特性
41+
- Cookie 是什么?它有什么作用和特性
4242
- User-Agent 的作用是什么?格式又是怎样的?
4343

4444
Header 中有各种各样的 Content-Type,每一种 Content-Type 所要求的请求体的格式可能是不一样的,你也需要了解其不同。

docs/guide/2024/week2.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
titleTemplate: ':title | 参考文档 - NewStar CTF 2024'
3+
---
4+
<script setup>
5+
import Container from '@/components/docs/Container.vue'
6+
import Text from '@/components/docs/NonTextDetectable.vue'
7+
</script>
8+
9+
# Week 2
10+
11+
本周的题将继续在上周的基础上,注重入门知识基础、工具的使用等。从下周开始,题目将逐渐增加难度,希望大家把握好前两周的题目考查内容,为后面的题目做好准备。
12+
13+
## Pwn
14+
15+
### ez_game
16+
17+
<Container type='tip'>
18+
19+
本题考查的是 ret2libc 的知识点。
20+
</Container>
21+
22+
开始这个题目前,你需要先了解以下内容:
23+
24+
- 栈溢出的原理
25+
- PLT 和 GOT 表的关系以及延迟绑定
26+
- 偏移和基地址之间的关系<span data-desc>(如 `puts` 函数相对于 `libc` 基地址的偏移)</span>
27+
- 在 64 位程序下如何实现控制程序的参数
28+
- 了解栈对齐的实现
29+
- 学会寻找 `/bin/sh` 的地址
30+
31+
内容有点多,希望大家能继续玩这个游戏。
32+
33+
### Inverted World
34+
35+
本题考查 ret2backdoor 以及基础的逆向能力。
36+
37+
程序中的 `_read` 函数为自定义的函数,需要分析<span data-desc>(IDA 可能会在反编译的 C 函数窗口把这个函数的名字前面的下划线去掉)</span>。
38+
39+
除此之外还要注意一下栈帧的结构以及函数调用时栈帧的变化。
40+
41+
### Bad Asm
42+
43+
<Container type='tip'>
44+
45+
本题考查 shellcode 编写能力。
46+
</Container>
47+
48+
题目对 shellcode 的要求是:
49+
50+
- 不能直接使用限制的汇编指令
51+
- shellcode 中间不能有空字节。
52+
53+
想想办法绕过这些限制。
54+
55+
可以利用一些在线工具辅助解答:[Online x86 / x64 Assembler and Disassembler](https://defuse.ca/online-x86-assembler.htm#disassembly).
56+
57+
## Web
58+
59+
### 你能在一秒内打出八句英文吗
60+
61+
考查对 Web 自动化脚本的撰写,可以了解下 Python 的 `Requests``BeautifulSoup` 库,以及 HTTP 会话控制。
62+
63+
### 复读机
64+
65+
<Container type='tip'>
66+
67+
本题考查 Python 中 Flask 框架中,`render_template` 等函数导致的模板渲染注入(SSTI)的利用。
68+
</Container>
69+
70+
对于 Python SSTI,一个简单的例子是,当你输入 `{{ '{'+'{ 3+4 }'+'}' }}`,它将输出了 `7`. 那么,通过精心构造 `{{ '{'+'{ }'+'}' }}` 中的表达式,可以实现任意命令执行。
71+
72+
<Container type='quote'>
73+
74+
在编辑这一段的时候直接写 `{{ '\u0060{'+'{ 3+4 }'+'}\u0060' }}`,导致 Vue 直接渲染了结果 `7`,可以说是现场复现了模板注入了。
75+
</Container>
76+
77+
### 谢谢皮蛋 plus
78+
79+
还是 SQL 注入题,在 Week 1 的基础上增加了一点过滤。选手需要测试过滤了哪些字符,并尝试绕过。
80+
81+
这篇文章总结了一些常见的 SQL 注入:[SQL注入绕过过滤总结](https://yang1k.github.io/post/sql%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E5%8E%9F%E7%90%86%E6%80%BB%E7%BB%93/)
82+
83+
## Misc
84+
85+
### 字里行间的秘密
86+
87+
考查一般的文字隐写形式,可自行搜索相关文字隐写的考点与考查方式。
88+
89+
### 热心助人的小明同学<Text class='desc-text' fontSize='16px' fontWeight='500' content='(内存取证入门)' />
90+
91+
内存取证本质就是解析内存获取计算机某个时间节点的状态信息<span data-desc>(如进程、文件、注册表、浏览记录等)</span>。
92+
93+
我们通常在 CTF 中遇到的内存取证题基本给了一个 `.raw` 文件,需要我们使用工具去解析<span data-desc>(工具用得熟练就赢了)</span>。
94+
95+
对于初学者来说,建议使用 Volatility 作为内存取证的入门工具,你需要做的就是想办法安装这个软件,搜索使用方法,根据题目的指引「一把梭」。
96+
97+
对于针对老旧系统的镜像取证,通常使用 Volatility 2,这也是用的比较多的版本;面对一些新系统的内存镜像可以尝试使用 Volatility 3,这个软件的具体用法,可以尝试使用 `-h` 命令行选项摸索,或自行上网了解。
98+
99+
当然,你也可以借助一些第三方取证工具。在某些题目下,使用一些第三方工具可能会有意想不到的效果。<span data-desc>不过 Week 2 暂时不需要就是了,很简单的。</span>
100+
101+
## Reverse
102+
103+
### Dirty_flowers
104+
105+
考虑到新生在 Week 2 就学会汇编和花指令可能还是有点奢望,因此本题考查的实际上是 IDA 的 nop 操作。
106+
107+
只做出这个题目实际上需要的前置知识非常少,只需要根据题目中的提示信息学会 IDA 如何 patch 汇编指令从而正确反编译。
108+
109+
当然希望同学们可以通过这个题多多学习汇编语言,了解花指令是如何让 IDA 无法正确反编译的。
110+
111+
### ezencrypt
112+
113+
安卓常见的加密手段。
114+
115+
- Java 层有两个加密<span data-desc>(感觉能看成一个呢)</span>
116+
- so 层有两个加密<span data-desc>(感觉只能算一个呢)</span>
117+
118+
请查找有关 Java 层的标准加密方式,Java 层调用 so 层的调用值传递方式。(JNI 怎么传字符串呢?)
119+
120+
这次的题很简单呢。
121+
122+
### Ptrace
123+
124+
<Container type='tip'>
125+
126+
本题考查对于调试器原理的理解,侧重对 ptrace 的了解。
127+
</Container>
128+
129+
这里包含两个文件 `father``son`,请将两个文件放在同一目录下,并且只需要启动一个文件即可。
130+
131+
所以需要先理清这两个文件的关系,在此过程中,你可能还需要了解 `fork` `execl` 等函数的作用,它们可以帮助你理清文件的关系。
132+
133+
加密的方法很简单,重点关注 ptrace 到底做了什么,改变了什么。
134+
135+
### UPX
136+
137+
选手需要了解 UPX 以及它的加密算法。

docs/learn/pwn.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Pwn 需要的不仅是基本的 C 语言、汇编语言以及逆向功底,还
3030

3131
请先确保你具备 Ubuntu<span data-desc>(建议用近几年的 Ubuntu,比如 22.04 LTS、24.04 LTS)</span> 操作系统。随后可以准备以下软件或工具:
3232

33-
- IDA/Ghidra
33+
- IDA/Ghidra<span data-desc>(IDA 为 Windows 平台下的工具)</span>
3434
- pwntools
3535
- gdb 及其插件
3636
- ROPgadget
@@ -312,7 +312,7 @@ p.interactive()
312312
之后注释掉 `process` 函数与 `gdb.attach` 函数,换 `remote` 函数打远程靶机即可:
313313

314314
```Python
315-
p = remote('hacker.akyuu.space', 6000)
315+
p = remote('120.53.240.208', 6000)
316316
```
317317

318318
![远程利用后门成功](/assets/images/learn/pwn-run-exp-remote_success.png)

theme-config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ sidebar:
5858
items:
5959
- text: Week 1
6060
link: /guide/2024/week1
61+
- text: Week 2
62+
link: /guide/2024/week2
6163

6264
'/wp/2024/':
6365
- text: Week 1

0 commit comments

Comments
 (0)