目录

  1. 1. 前言
  2. 2. PHP
    1. 2.1. 第一步
    2. 2.2. 第二步
    3. 2.3. 第三步
    4. 2.4. 第四步
  3. 3. Python
    1. 3.1. 第二步
    2. 3.2. 第三步
    3. 3.3. 第四步
  4. 4. Nodejs

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

基于GZCTF的出题

2023/9/30 Docker
  |     |   总文章阅读量:

前言

出动态flag题的时候学到的

参考陈橘墨师傅的docker出题模板

以出题的经过为例

PHP

第一步

选择你需要的靶机环境模板

在release里面选择你需要的环境并下载

image-20230930215925167

这里以web-nginx-php73为例

第二步

把题目源码放在src文件夹下,可以把同目录下的shell.php和flag.php删掉

Dockerfile里的内容没什么改动的必要

要看的主要是docker-entrypoint.sh文件

# 将FLAG写入文件 请根据需要修改
echo $INSERT_FLAG | tee /flag

按需修改,其它部分也不用动


第三步

题目的文件夹下执行命令

docker build -t Hub的id/镜像名:自定tags .

image-20230930220641873

第四步

在本地docker环境下检查是否能够运行,没有问题的话就push to hub即可


Python

第一步是一样的,这里以web-flask-python_3.8为例

第二步

题目名设置为app.py,放在src文件夹下

如使用了 pycryptodome 等第三方库,请在 ./Dockerfile 内补充pip安装语句

第三步

题目的文件夹下执行命令

docker build -t Hub的id/镜像名:自定tags .

第四步

检查运行,这个模板的默认暴露端口位于8080

docker run -p 8080:8080 镜像名:tags

没问题就push to hub


Nodejs

有一个很大的问题就是巨魔模板里面拉的node官方镜像高达1.1个g,我们需要自己修改一下Dockerfile

第一行修改成这个即可

FROM node:10-alpine