Skip to content

Commit 84f77f8

Browse files
authored
Add files for week3 guide (#22)
* Add files via upload * Update week3.md * Update week3.md * Update week3.md * Update week3.md
1 parent a2b78e5 commit 84f77f8

File tree

1 file changed

+133
-0
lines changed

1 file changed

+133
-0
lines changed

docs/guide/2024/week3.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
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 3
10+
11+
本周题目逐渐增加难度,希望大家好好学习题目的考查内容。与此同时,下周的题目会更有难度,希望大家继续深入学习,为后面的题目做好准备。
12+
13+
## Pwn
14+
15+
### One Last B1te
16+
17+
<Container type='tip'>
18+
19+
在解题之前,你需要了解 ``RELRO`` 保护以及动态链接与延迟绑定的流程以及细节,除此之外还有沙箱机制。
20+
21+
</Container>
22+
23+
程序中提供了任意地址写的机会,但是我们已知的只有 elf 地址。
24+
25+
那一个字节写到哪里好呢? elf 中可写的段只有 ``0x404000`` 开始的段,仔细规划规划那一个字节写在哪里,写什么吧~
26+
27+
除此之外,如果没有思路的话建议多动态调试看看,注意 ``call close`` 函数时寄存器的状态。
28+
29+
如果你苦恼于 elf 中没有好用的 ``gadget`` ,不妨看看别的可执行段中的 ``gadget``
30+
31+
如果你苦恼于 ``gadget`` 没法设置 ``rdx`` 寄存器,不妨看看别的 ``gadget`` ,能设置 ``rdx`` 寄存器的 ``gadget`` 不只有 ``pop rdx;ret;``
32+
33+
## Web
34+
35+
### 臭皮的计算机
36+
37+
<Container type='tip'>
38+
39+
这题考查 python 的命令执行和输入过滤绕过。
40+
41+
</Container>
42+
43+
了解 python3 的一些特性,``eval()`` 可以执行字符串中的任意 Python 表达式,包括算术运算、函数调用,甚至系统命令。灵活利用 bypass 技巧,不要拘泥于单一使用,可以组合,嵌套使用。
44+
45+
### 臭皮踩踩背
46+
47+
<Container type='tip'>
48+
49+
题目考察对 python "一切皆对象"的理解。
50+
51+
</Container>
52+
53+
字符串,数字,函数等等都是"对象",都有自己的属性,对可利用对象和属性的积累,是 python 沙箱逃逸的基础。
54+
55+
理解什么是内建函数 ``__builtins__``,``eval()`` 函数的进阶用法,什么是命名空间,以及常用的命令执行的函数对解开这题至关重要。
56+
57+
推荐去 python 官方文档了解 ``eval()`` 函数:
58+
59+
[Built-in Functions](https://docs.python.org/3/library/functions.html#eval)
60+
61+
[Python/bltinmodule.c](https://github.com/python/cpython/blob/main/Python/bltinmodule.c#L937)
62+
63+
强烈建议先自己本地试试。大部分源代码题目已经给出。
64+
65+
### 这照片是你吗
66+
67+
<Container type='tip'>
68+
69+
本题考查常见的漏洞:路径穿越漏洞,并且考察 python 的代码审计。
70+
71+
</Container>
72+
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
88+
89+
### SMc_math
90+
91+
``SMC`` ,即 ``Self Modifying Code`` ,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。
92+
93+
``SMC`` 的一般破解方法是,通过动态调试,在代码解密完之后下断点并查看解密之后的代码。
94+
95+
``Z3`` 是由微软开发的一个高性能定理证明器,用于解决逻辑约束、符号执行、模型检测等问题。``Python`` 版本的 ``Z3`` 提供了接口,可以方便地在 Python 中使用 ``Z3`` 求解逻辑问题,特别是在 ``SMT(Satisfiability Modulo Theories)``求解方面。
96+
97+
### flowering_shrubs
98+
99+
``IDAPython`` 是一个将 Python 集成到 ``IDA Pro(Interactive DisAssembler`` 中的插件。它允许你使用 Python 脚本来自动化逆向工程任务,从而提高分析效率。
100+
101+
如果你在使用 ida 过程中发现了许多同样的混淆,你可以编写 ``idapython`` 脚本来批量去除。
102+
103+
### simpleAndroid
104+
105+
关于安卓,了解一下 ``JNI`` 的静态注册和动态注册。
106+
107+
加密的算法不难,主要就是识别出 java 层和 so 层分别起到什么作用,它们是怎么进行交互的。
108+
109+
### SecretOfKawaii
110+
111+
<Container type='tip'>
112+
113+
``Jeb`` 解控制流混淆, so 层普通压缩壳用 ``upx`` 解。
114+
115+
</Container>
116+
117+
解密涉及到端序转化,建议查找相关资料,理解后再做题,同时还需要有点补码的知识呢。加密算法在CTF比赛还是比较常见的。
118+
119+
### 011vm
120+
121+
``ollvm`` 混淆需要使用 ``d810`` 去除,但可能还面临着部分控制流难以去除的问题,最好结合动调做题。
122+
123+
本题只有常见加密,细心观察逻辑即可解出。
124+
125+
## Crypto
126+
127+
### 不用谢喵
128+
129+
<Container type='tip'>
130+
131+
[更加明确的考点指向](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)
132+
133+
</Container>

0 commit comments

Comments
 (0)