2
2
3
3
![ ctf-docker-template] ( https://github.com/CTF-Archives/ctf-docker-template/assets/41804496/71e71631-1d10-4076-b63d-8668a7b22a5f )
4
4
5
-
6
5
## About
7
6
8
- ** ctf-docker-template** 是一个用于支持动态 Flag 的Docker容器模板项目,支持主流的各类CTF平台.
7
+ ** ctf-docker-template** 是一个用于支持动态 Flag 的Docker容器模板项目,支持主流的各类CTF平台
9
8
10
- 项目存有一定局限性,但已可适用于绝大多数初中级别题目的命题需求。
9
+ 项目存有一定局限性,但已可适用于绝大多数初中级别题目的命题需求
11
10
12
11
本仓库内的Docker容器模板支持的 FLAG 注入类型如下:
13
12
14
13
- ` $FLAG ` ([ CTFd] ( https://github.com/CTFd/CTFd ) ,[ NSSCTF] ( https://www.nssctf.cn/ ) )
15
14
- ` $GZCTF_FLAG ` ([ GZCTF] ( https://github.com/GZTimeWalker/GZCTF ) )
16
15
- ` $DASCTF ` (DASCTF)
17
16
18
- 三种动态flag部署方式,支持GZCTF、CTFd、安恒DASCTF等支持Docker动态部署题目靶机的平台。
17
+ 三种动态flag部署方式,支持GZCTF、CTFd、安恒DASCTF等支持Docker动态部署题目靶机的平台
19
18
20
19
> 一般情况下,CTF题目动态FLAG使用环境变量注入的方式来实现:
21
20
>
25
24
26
25
** 有问题请开issue,好用请点star,有问题的话欢迎通过 [ CTF-Archives售后快速服务群] ( http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=KFamhBpmURTZpndhc0MI7_1l3a6Xezrf&authKey=Yenwm7%2B%2F%2FT%2BtSXCSyr%2B7fYS47Ot0MwFqesH4HOLT8ZADE2e9XO6AS96HQvjxh%2B%2BG&noverify=0&group_code=894957229 ) 联系维护人员寻求帮助**
27
26
28
- > [ !CAUTION]
29
- > ** 请注意!!**
30
- >
31
- > ** 此仓库内的模板仅在Linux环境(linux/amd64)下进行测试并保证可用性,如果为windows(windows/amd64)或者macos(linux/arm)等其他架构,不保证可用性😔**
32
- >
33
- > 建议直接在linux下执行 ` git clone ` 操作,或者直接从github下载zip版本的源码.
34
-
35
- ## Structure
36
-
37
- 在一般情况下,每个模板的文件结构如下:
38
-
39
- ```
40
- .
41
- ├── README.md
42
- ├── Dockerfile
43
- ├── config # Web容器 中间件配置需要定义的专属
44
- │ └── nginx.conf
45
- ├── data # Web容器 且 有数据库需求容器专属
46
- │ └── db.sql
47
- ├── docker
48
- │ └── docker-compose.yml
49
- ├── service
50
- │ └── docker-entrypoint.sh
51
- └── src
52
- └── main.py
53
- ```
54
-
55
- - ` Dockerfile ` 为docker容器编译文件,用于设计docker容器,可在其中设置换源、增添软件包等等
56
-
57
- - ` config ` 文件夹内存放着容器内服务相关的配置文件,如 ` nginx ` 的配置文件等等
58
-
59
- - ` data ` 文件夹内存放着容器内服务相关的配置文件,如 ` nginx ` 的配置文件等等
60
-
61
- - ` docker ` 文件夹内存放与docker有关的文件,如 ` docker-compose.yml ` 文件,内部已经设置好了端口转发和测试用flag,便于测试容器环境
62
-
63
- - ` service ` 文件夹内存放着与服务有关的文件,如 ` docker-entrypoint.sh ` 用于定义容器的入口点
64
-
65
- - ` src ` 文件夹内存放着题目的项目源码,也可以是pwn题目的二进制文件,即为题目的相关文件
66
-
67
- - ` flag.php ` 用于直接查看flag文件的测试文件,访问可直接查看当前题目根目录下的flag文件,如果文件不存在则会输出error
68
-
69
- - ` shell.php ` 一句话木马,用于测试web容器稳定性
70
-
71
- ......
72
-
73
27
## 常见问题
74
28
75
29
### no_socket with crypto
@@ -178,7 +132,6 @@ sed -i ""s/\r//"" docker-entrypoint.sh
178
132
179
133
- 将会话转发给选手的连接
180
134
181
-
182
135
** 使用:**
183
136
184
137
直接将SageMath文件/项目放入 ` ./src` 目录后执行后续操作,文件名建议使用 ` main.sage` ,便于环境识别,如需更改文件名,请在 ` ./service/docker-entrypoint.sh` 内更改
@@ -194,7 +147,7 @@ KOH题目是基于HTTP服务与后端评判系统进行交互的,故题目容器
194
147
` ` ` python
195
148
@app.route(' /upload' , methods=[' POST' ])
196
149
def upload ():
197
- pass
150
+ pass
198
151
```
199
152
200
153
该路由负责接收用户上传的数据。数据将以表单数据的形式进行上传,参数名为file。
@@ -211,7 +164,7 @@ requests.post(f'http://{url}/upload', files={
211
164
212
165
``` json
213
166
{
214
- "code" : 200
167
+ "code" : 200
215
168
}
216
169
```
217
170
@@ -224,7 +177,7 @@ requests.post(f'http://{url}/upload', files={
224
177
``` python
225
178
@app.route (' /check' , methods = [' POST' ])
226
179
def check ():
227
- pass
180
+ pass
228
181
```
229
182
230
183
当后端完成对/upload路由的访问且没有异常时,将访问/check路由。访问示例代码如下:
@@ -237,8 +190,8 @@ requests.post(f'http://{url}/check', timeout=10)
237
190
238
191
``` json
239
192
{
240
- "code" : 200 ,
241
- "score" : 100
193
+ "code" : 200 ,
194
+ "score" : 100
242
195
}
243
196
```
244
197
@@ -345,11 +298,11 @@ rm -f /home/ctf/usr/local/lib/python3.10/subprocess.py
345
298
346
299
适用于基于 ` war ` 程序包部署环境的需求
347
300
348
- 直接将 ` war ` 程序包放入 ` ./src `
301
+ 直接将 ` war ` 程序包放入 ` ./src `
349
302
350
303
#### LAMP-php80 / LNMP-php73 / nginx-php73
351
304
352
- > 部分容器参考 https://github.com/CTFTraining/ 感谢 [ 陌竹 - mozhu1024] ( https://github.com/mozhu1024 ) 师傅 和 [ 赵总 - glzjin] ( https://github.com/glzjin ) 师傅做出的贡献
305
+ > 部分容器参考 [ CTF Training ] ( https://github.com/CTFTraining/ ) 感谢 ** [ 陌竹 - mozhu1024] ( https://github.com/mozhu1024 ) ** 师傅 和 ** [ 赵总 - glzjin] ( https://github.com/glzjin ) ** 师傅做出的贡献
353
306
354
307
` Apache2 ` +` PHP 8.0.30 ` +` 10.5.21-MariaDB ` 的基础环境,默认暴露端口位于 80
355
308
0 commit comments