sstilabs镜像制作过程记录
jerem1ah Lv4

sstilabs镜像制作过程记录

1.前言

本镜像制作的项目来自于https://github.com/X3NNY/sstilabs

2.学习和借鉴python_flask比赛的Dockerfile

参考的项目https://github.com/CTFTraining/pasecactf_2019_web_flask_ssti

1
2
3
4
5
6
7
#Dockerfile

FROM python:3.7-alpine
COPY ./files /app
RUN pip install -r app/requirements.txt
WORKDIR /app
CMD sh -c "echo $FLAG > /app/flag && export FLAG=not_flag && FLAG=not_flag" && python app.py
1
2
3
4
5
6
7
8
9
10
11
#docker-compose.yml

version: '3.3'
services:
service:
build: .
image: ctftraining/pasecactf_2019_flask_ssti
ports:
- 8470:1337
environment:
- FLAG=flag{flag_test}

3.开始写dockerfile

1
2
3
4
5
6
7
8
#最后用的requirements.txt

Flask==1.1.1
Jinja2==2.10.1
MarkupSafe==0.23
itsdangerous==0.24
Werkzeug==0.15

1
2
3
4
5
6
7
8
9
#Dockerfile

FROM python:3.7-alpine
COPY ./app /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD sh -c "echo $FLAG > /flag && export FLAG=not_flag && FLAG=not_flag" \
&& python app.py
EXPOSE 5000
1
2
3
4
5
6
7
8
9
10
11
#docker-compose.yml

version: '3.3'
services:
service:
build: .
image: jerem1ah/python_sstilabs
ports:
- 7777:5000
environment:
- FLAG=flag{flag_test}

4.镜像地址

1
2
3
docker pull jerem1ah/python_sstilabs

端口7777:5000

5.结语

hub.dcoker地址

github项目地址【待更新】

ssti学习博客【待更新】

项目文件阿里云盘地址【待更新】

6.排错过程【写一个程序很简单,麻烦的还是排错…一共试了10多次才成功】

1.python制作镜像踩坑过程-依赖问题【requirements.txt写的不全,后面的Flask的依赖一般直接下载了最新版,导致出错,一直在试错requirements.txt文件】

image-20230102230216527

image-20230102230242585

image-20230102230710989

image-20230102230640105

1
2
3
4
5
Flask==1.1.1
Jinja2==2.10.1
MarkupSafe==0.23
itsdangerous==0.24
Werkzeug==0.15

以上前两张图第一个虽然只有Flask==1.1.1但是依然会自动下载其他python包,但是会出现一个>=而不是==,也就是说只要满足Flask=1.1.1的版本都可以,一般会自动下载最新版本的,但是我们的程序用的可能不是最新版本的就会出错。经过查看docker容器的日志,试出了下面四个必须为==才能正常运行。

2.python程序的端口问题,还有先开启debug后面关了比较方便【host=’0.0.0.0’才是正确的配置,不设置或者127.0.0.1不能够访问端口】

image-20230102225922026

image-20230102225833384

以上两张图前者不能正常访问,后者可以,区别在于host=’127.0.0.1’和host=’0.0.0.0’

3.忘记修改debug为False【】

最后的镜像

image-20230102233021910

 Comments