Skip to content

Commit 8866e98

Browse files
committed
Fixes typo
1 parent 84f77f8 commit 8866e98

File tree

4 files changed

+124
-139
lines changed

4 files changed

+124
-139
lines changed

docs/guide/2024/week1.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,38 @@ import Container from '@/components/docs/Container.vue'
1717

1818
对于快速入门和解题样例,可以阅读 [Pwn 二进制安全 - 快速入门](/learn/pwn)
1919

20+
## Reverse
21+
22+
### ez_debug
23+
24+
本题考查 IDA 或 x64dbg 的动态调试使用。
25+
26+
### begin
27+
28+
你需要学会使用 IDA 进行字符串搜索,根据字符串定位关键代码的位置。
29+
30+
下面列举一些 IDA 的常用快捷键:
31+
32+
- <kbd>F5</kbd> 查看反编译之后的 C 语言代码
33+
- <kbd>⇧ Shift</kbd><kbd>F12</kbd> 查看程序中的所有字符串
34+
- 点击变量或者函数名,按下 <kbd>X</kbd>,可以看到这些变量或者函数被谁引用
35+
36+
### Simple_encryption
37+
38+
题目将你的输入进行了加密,你只能看见加密后的结果和加密算法。你需要根据加密结果和加密算法解出原始内容。
39+
40+
异或运算的逆向:符号 `^` 表示的就是异或运算(数学中采用符号 $\oplus$)。异或运算是可逆的,即若 $a \oplus b = c$,则 $c \oplus b = a$.
41+
42+
本题仅考查加减运算和异或运算的逆向。所谓运算的逆向,即类似数学中通过 $y = f(x)$,求 $x = f^{-1}(y)$ 的过程(或已知 $y$,求 $x$ 的过程)。
43+
44+
### ezAndroidStudy
45+
46+
本题主要考查对 APK 基本结构的掌握。
47+
48+
关于 APK 文件,可以使用反编译工具 jadx 打开。
49+
50+
`AndroidManifest.xml` 文件往往包含很多关键信息,如 `MainActivity`<span data-desc>(`MainActivity` 类似于 C 语言中的 `main` 方法,是整个程序的入口)。</span>
51+
2052
## Web
2153

2254
### Pangbai 过家家(1)
@@ -90,35 +122,3 @@ Level 6 有什么用,还不是被神之右手所打败
90122
### 兑换码
91123

92124
本题考查 PNG 文件的字节码知识,你可以通过自行查阅 PNG 的二进制格式(如文件头、IHDR、宽、高、数据块等)来了解 PNG 文件的构成。
93-
94-
## Reverse
95-
96-
### ez_debug
97-
98-
本题考查 IDA 或 x64dbg 的动态调试使用。
99-
100-
### begin
101-
102-
你需要学会使用 IDA 进行字符串搜索,根据字符串定位关键代码的位置。
103-
104-
下面列举一些 IDA 的常用快捷键:
105-
106-
- <kbd>F5</kbd> 查看反编译之后的 C 语言代码
107-
- <kbd>⇧ Shift</kbd><kbd>F12</kbd> 查看程序中的所有字符串
108-
- 点击变量或者函数名,按下 <kbd>X</kbd>,可以看到这些变量或者函数被谁引用
109-
110-
### Simple_encryption
111-
112-
题目将你的输入进行了加密,你只能看见加密后的结果和加密算法。你需要根据加密结果和加密算法解出原始内容。
113-
114-
异或运算的逆向:符号 `^` 表示的就是异或运算(数学中采用符号 $\oplus$)。异或运算是可逆的,即若 $a \oplus b = c$,则 $c \oplus b = a$.
115-
116-
本题仅考查加减运算和异或运算的逆向。所谓运算的逆向,即类似数学中通过 $y = f(x)$,求 $x = f^{-1}(y)$ 的过程(或已知 $y$,求 $x$ 的过程)。
117-
118-
### ezAndroidStudy
119-
120-
本题主要考查对 APK 基本结构的掌握。
121-
122-
关于 APK 文件,可以使用反编译工具 jadx 打开。
123-
124-
`AndroidManifest.xml` 文件往往包含很多关键信息,如 `MainActivity`<span data-desc>(`MainActivity` 类似于 C 语言中的 `main` 方法,是整个程序的入口)。</span>

docs/guide/2024/week2.md

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,44 @@ import Text from '@/components/docs/NonTextDetectable.vue'
5454

5555
可以利用一些在线工具辅助解答:[Online x86 / x64 Assembler and Disassembler](https://defuse.ca/online-x86-assembler.htm#disassembly).
5656

57+
## Reverse
58+
59+
### Dirty_flowers
60+
61+
考虑到新生在 Week 2 就学会汇编和花指令可能还是有点奢望,因此本题考查的实际上是 IDA 的 nop 操作。
62+
63+
只做出这个题目实际上需要的前置知识非常少,只需要根据题目中的提示信息学会 IDA 如何 patch 汇编指令从而正确反编译。
64+
65+
当然希望同学们可以通过这个题多多学习汇编语言,了解花指令是如何让 IDA 无法正确反编译的。
66+
67+
### ezencrypt
68+
69+
安卓常见的加密手段。
70+
71+
- Java 层有两个加密<span data-desc>(感觉能看成一个呢)</span>
72+
- so 层有两个加密<span data-desc>(感觉只能算一个呢)</span>
73+
74+
请查找有关 Java 层的标准加密方式,Java 层调用 so 层的调用值传递方式。(JNI 怎么传字符串呢?)
75+
76+
这次的题很简单呢。
77+
78+
### Ptrace
79+
80+
<Container type='tip'>
81+
82+
本题考查对于调试器原理的理解,侧重对 ptrace 的了解。
83+
</Container>
84+
85+
这里包含两个文件 `father``son`,请将两个文件放在同一目录下,并且只需要启动一个文件即可。
86+
87+
所以需要先理清这两个文件的关系,在此过程中,你可能还需要了解 `fork` `execl` 等函数的作用,它们可以帮助你理清文件的关系。
88+
89+
加密的方法很简单,重点关注 ptrace 到底做了什么,改变了什么。
90+
91+
### UPX
92+
93+
选手需要了解 UPX 以及它的加密算法。
94+
5795
## Web
5896

5997
### 你能在一秒内打出八句英文吗
@@ -78,7 +116,7 @@ import Text from '@/components/docs/NonTextDetectable.vue'
78116

79117
还是 SQL 注入题,在 Week 1 的基础上增加了一点过滤。选手需要测试过滤了哪些字符,并尝试绕过。
80118

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/)
119+
这篇文章总结了一些常见的 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/)
82120

83121
### PangBai 过家家(2)
84122

@@ -102,41 +140,3 @@ import Text from '@/components/docs/NonTextDetectable.vue'
102140
对于针对老旧系统的镜像取证,通常使用 Volatility 2,这也是用的比较多的版本;面对一些新系统的内存镜像可以尝试使用 Volatility 3,这个软件的具体用法,可以尝试使用 `-h` 命令行选项摸索,或自行上网了解。
103141

104142
当然,你也可以借助一些第三方取证工具。在某些题目下,使用一些第三方工具可能会有意想不到的效果。<span data-desc>不过 Week 2 暂时不需要就是了,很简单的。</span>
105-
106-
## Reverse
107-
108-
### Dirty_flowers
109-
110-
考虑到新生在 Week 2 就学会汇编和花指令可能还是有点奢望,因此本题考查的实际上是 IDA 的 nop 操作。
111-
112-
只做出这个题目实际上需要的前置知识非常少,只需要根据题目中的提示信息学会 IDA 如何 patch 汇编指令从而正确反编译。
113-
114-
当然希望同学们可以通过这个题多多学习汇编语言,了解花指令是如何让 IDA 无法正确反编译的。
115-
116-
### ezencrypt
117-
118-
安卓常见的加密手段。
119-
120-
- Java 层有两个加密<span data-desc>(感觉能看成一个呢)</span>
121-
- so 层有两个加密<span data-desc>(感觉只能算一个呢)</span>
122-
123-
请查找有关 Java 层的标准加密方式,Java 层调用 so 层的调用值传递方式。(JNI 怎么传字符串呢?)
124-
125-
这次的题很简单呢。
126-
127-
### Ptrace
128-
129-
<Container type='tip'>
130-
131-
本题考查对于调试器原理的理解,侧重对 ptrace 的了解。
132-
</Container>
133-
134-
这里包含两个文件 `father``son`,请将两个文件放在同一目录下,并且只需要启动一个文件即可。
135-
136-
所以需要先理清这两个文件的关系,在此过程中,你可能还需要了解 `fork` `execl` 等函数的作用,它们可以帮助你理清文件的关系。
137-
138-
加密的方法很简单,重点关注 ptrace 到底做了什么,改变了什么。
139-
140-
### UPX
141-
142-
选手需要了解 UPX 以及它的加密算法。

docs/guide/2024/week3.md

Lines changed: 51 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -3,131 +3,114 @@ titleTemplate: ':title | 参考文档 - NewStar CTF 2024'
33
---
44
<script setup>
55
import Container from '@/components/docs/Container.vue'
6-
import Text from '@/components/docs/NonTextDetectable.vue'
76
</script>
87

98
# Week 3
109

11-
本周题目逐渐增加难度,希望大家好好学习题目的考查内容。与此同时,下周的题目会更有难度,希望大家继续深入学习,为后面的题目做好准备
10+
从本周开始,题目将逐渐增加难度,并注重知识点的考察,希望大家好好学习相关内容。若仍有相关问题,请参考[快速入门](/learn/)
1211

1312
## Pwn
1413

1514
### One Last B1te
1615

17-
<Container type='tip'>
16+
在解题之前,你需要了解 `RELRO` 保护以及动态链接与延迟绑定的流程以及细节,除此之外还有沙箱机制。
1817

19-
在解题之前,你需要了解 ``RELRO`` 保护以及动态链接与延迟绑定的流程以及细节,除此之外还有沙箱机制
18+
程序中提供了任意地址写的机会,但是我们已知的只有 ELF 地址
2019

21-
</Container>
20+
那一个字节写到哪里好呢? ELF 中可写的段只有 `0x404000` 开始的段,仔细规划规划那一个字节写在哪里,写什么吧 ~
2221

23-
程序中提供了任意地址写的机会,但是我们已知的只有 elf 地址
22+
除此之外,如果没有思路的话建议多动态调试看看,注意 `call close` 函数时寄存器的状态
2423

25-
那一个字节写到哪里好呢? elf 中可写的段只有 ``0x404000`` 开始的段,仔细规划规划那一个字节写在哪里,写什么吧~
24+
如果你苦恼于 ELF 中没有好用的 `gadget` ,不妨看看别的可执行段中的 `gadget`
2625

27-
除此之外,如果没有思路的话建议多动态调试看看,注意 ``call close`` 函数时寄存器的状态。
26+
如果你苦恼于 `gadget` 没法设置 `rdx` 寄存器,不妨看看别的 `gadget` ,能设置 `rdx` 寄存器的 `gadget` 不只有 `pop rdx; ret;`.
2827

29-
如果你苦恼于 elf 中没有好用的 ``gadget`` ,不妨看看别的可执行段中的 ``gadget``
28+
## Reverse
3029

31-
如果你苦恼于 ``gadget`` 没法设置 ``rdx`` 寄存器,不妨看看别的 ``gadget`` ,能设置 ``rdx`` 寄存器的 ``gadget`` 不只有 ``pop rdx;ret;``
30+
### SMc_math
3231

33-
## Web
32+
`SMC` ,即 `Self Modifying Code` ,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。
3433

35-
### 臭皮的计算机
34+
`SMC` 的一般破解方法是,通过动态调试,在代码解密完之后下断点并查看解密之后的代码。
3635

37-
<Container type='tip'>
36+
`Z3` 是由微软开发的一个高性能定理证明器,用于解决逻辑约束、符号执行、模型检测等问题。`Python` 版本的 `Z3` 提供了接口,可以方便地在 Python 中使用 `Z3` 求解逻辑问题,特别是在 `SMT(Satisfiability Modulo Theories)`求解方面。
3837

39-
这题考查 python 的命令执行和输入过滤绕过。
38+
### flowering_shrubs
4039

41-
</Container>
40+
`IDAPython` 是一个将 Python 集成到 `IDA Pro(Interactive DisAssembler` 中的插件。它允许你使用 Python 脚本来自动化逆向工程任务,从而提高分析效率。
4241

43-
了解 python3 的一些特性,``eval()`` 可以执行字符串中的任意 Python 表达式,包括算术运算、函数调用,甚至系统命令。灵活利用 bypass 技巧,不要拘泥于单一使用,可以组合,嵌套使用
42+
如果你在使用 ida 过程中发现了许多同样的混淆,你可以编写 `idapython` 脚本来批量去除
4443

45-
### 臭皮踩踩背
44+
### simpleAndroid
4645

47-
<Container type='tip'>
46+
关于安卓,了解一下 `JNI` 的静态注册和动态注册。
4847

49-
题目考察对 python "一切皆对象"的理解
48+
加密的算法不难,主要就是识别出 java 层和 so 层分别起到什么作用,它们是怎么进行交互的
5049

51-
</Container>
50+
### SecretOfKawaii
5251

53-
字符串,数字,函数等等都是"对象",都有自己的属性,对可利用对象和属性的积累,是 python 沙箱逃逸的基础
52+
使用 Jeb 解控制流混淆,so 层普通压缩壳用 UPX 解
5453

55-
理解什么是内建函数 ``__builtins__``,``eval()`` 函数的进阶用法,什么是命名空间,以及常用的命令执行的函数对解开这题至关重要
54+
解密涉及到端序转化,建议查找相关资料,理解后再做题,同时还需要有点补码的知识呢。加密算法在 CTF 比赛还是比较常见的
5655

57-
推荐去 python 官方文档了解 ``eval()`` 函数:
56+
### 011vm
5857

59-
[Built-in Functions](https://docs.python.org/3/library/functions.html#eval)
58+
`ollvm` 混淆需要使用 `d810` 去除,但可能还面临着部分控制流难以去除的问题,最好结合动调做题。
6059

61-
[Python/bltinmodule.c](https://github.com/python/cpython/blob/main/Python/bltinmodule.c#L937)
60+
本题只有常见加密,细心观察逻辑即可解出。
6261

63-
强烈建议先自己本地试试。大部分源代码题目已经给出。
62+
## Web
6463

65-
### 这照片是你吗
64+
### 臭皮的计算机
6665

6766
<Container type='tip'>
6867

69-
本题考查常见的漏洞:路径穿越漏洞,并且考察 python 的代码审计。
70-
68+
本题考查 Python 的命令执行和输入过滤绕过。
7169
</Container>
7270

73-
解题需要:
74-
75-
- 理解密钥复杂度与安全性之间的相关性。
76-
- 写脚本是很重要的基本功。
77-
- 对 SSRF 漏洞有一个基本认识。
78-
79-
### Include Me
80-
81-
这题主要考察远程文件包含漏洞,php伪协议,理解什么是转换流是本题的关键,同时还需了解一下 base64编码 的格式以及 url解码 和编码时的保留字符和非保留字符
82-
83-
### blindsql1
84-
85-
[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/)
86-
87-
## Reverse
71+
了解 Python 3 的一些特性,`eval()` 可以执行字符串中的任意 Python 表达式,包括算术运算、函数调用,甚至系统命令。灵活利用 ByPass 技巧,不要拘泥于单一使用,可以组合,嵌套使用。
8872

89-
### SMc_math
90-
91-
``SMC`` ,即 ``Self Modifying Code`` ,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。
92-
93-
``SMC`` 的一般破解方法是,通过动态调试,在代码解密完之后下断点并查看解密之后的代码。
73+
### 臭皮踩踩背
9474

95-
``Z3`` 是由微软开发的一个高性能定理证明器,用于解决逻辑约束、符号执行、模型检测等问题。``Python`` 版本的 ``Z3`` 提供了接口,可以方便地在 Python 中使用 ``Z3`` 求解逻辑问题,特别是在 ``SMT(Satisfiability Modulo Theories)``求解方面。
75+
<Container type='tip'>
9676

97-
### flowering_shrubs
77+
本题考查对 Python 中「一切皆对象」的理解。
78+
</Container>
9879

99-
``IDAPython`` 是一个将 Python 集成到 ``IDA Pro(Interactive DisAssembler`` 中的插件。它允许你使用 Python 脚本来自动化逆向工程任务,从而提高分析效率
80+
字符串,数字,函数等等都是"对象",都有自己的属性,对可利用对象和属性的积累,是 python 沙箱逃逸的基础
10081

101-
如果你在使用 ida 过程中发现了许多同样的混淆,你可以编写 ``idapython`` 脚本来批量去除
82+
理解什么是内建函数 `__builtins__` `eval()` 函数的进阶用法,什么是命名空间,以及常用的命令执行的函数对解开这题至关重要
10283

103-
### simpleAndroid
84+
推荐去 Python 官方文档了解 `eval()` 函数:
10485

105-
关于安卓,了解一下 ``JNI`` 的静态注册和动态注册。
86+
- [Built-in Functions](https://docs.python.org/3/library/functions.html#eval)
87+
- [Python/bltinmodule.c](https://github.com/python/cpython/blob/main/Python/bltinmodule.c#L937)
10688

107-
加密的算法不难,主要就是识别出 java 层和 so 层分别起到什么作用,它们是怎么进行交互的
89+
强烈建议先自己本地试试。大部分源代码题目已经给出
10890

109-
### SecretOfKawaii
91+
### 这照片是你吗
11092

11193
<Container type='tip'>
11294

113-
``Jeb`` 解控制流混淆, so 层普通压缩壳用 ``upx`` 解。
114-
95+
本题考查常见的漏洞:路径穿越漏洞,并且考查 Python 的代码审计。
11596
</Container>
11697

117-
解密涉及到端序转化,建议查找相关资料,理解后再做题,同时还需要有点补码的知识呢。加密算法在CTF比赛还是比较常见的。
98+
解题需要:
11899

119-
### 011vm
100+
- 理解密钥复杂度与安全性之间的相关性
101+
- 有写脚本的重要基本功
102+
- 对 SSRF 漏洞有一个基本认识
120103

121-
``ollvm`` 混淆需要使用 ``d810`` 去除,但可能还面临着部分控制流难以去除的问题,最好结合动调做题。
104+
### Include Me
122105

123-
本题只有常见加密,细心观察逻辑即可解出
106+
这题主要考查远程文件包含漏洞,PHP 伪协议,理解什么是转换流是本题的关键,同时还需了解一下 Base64 编码 的格式以及 URL 解码 和编码时的保留字符和非保留字符
124107

125-
## Crypto
108+
### blindsql1
126109

127-
### 不用谢喵
110+
与前几周的题一样,考察 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/)
128111

129-
<Container type='tip'>
112+
## Crypto
130113

131-
[更加明确的考点指向](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)
114+
### 不用谢喵
132115

133-
</Container>
116+
更加明确的考点指向,参见:[Block cipher mode of operation | Wikipedia](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation).

theme-config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ sidebar:
6060
link: /guide/2024/week1
6161
- text: Week 2
6262
link: /guide/2024/week2
63+
- text: Week 3
64+
link: /guide/2024/week3
6365

6466
'/wp/2024/':
6567
- text: Week 1

0 commit comments

Comments
 (0)