|
| 1 | +FROM ubuntu:22.04 |
| 2 | + |
| 3 | +# 制作者信息 |
| 4 | +LABEL auther_template="CTF-Archives" |
| 5 | + |
| 6 | +# apt更换镜像源,并安装相关依赖 |
| 7 | +RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list && \ |
| 8 | + sed -i 's@//.*security.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list |
| 9 | +RUN apt-get update && apt-get -y dist-upgrade && \ |
| 10 | + apt-get install -y lib32z1 xinetd |
| 11 | + |
| 12 | +# 新建用户,并进行账户改变 |
| 13 | +RUN useradd -m ctf |
| 14 | +WORKDIR /home/ctf |
| 15 | + |
| 16 | +# 复制相关lib,并处理环境 |
| 17 | +RUN cp -R /usr/lib* /home/ctf |
| 18 | + |
| 19 | +# 配置特殊管道映射 |
| 20 | +RUN mkdir /home/ctf/dev && \ |
| 21 | + mknod /home/ctf/dev/null c 1 3 && \ |
| 22 | + mknod /home/ctf/dev/zero c 1 5 && \ |
| 23 | + mknod /home/ctf/dev/random c 1 8 && \ |
| 24 | + mknod /home/ctf/dev/urandom c 1 9 && \ |
| 25 | + chmod 666 /home/ctf/dev/* |
| 26 | + |
| 27 | +# 设置xinetd启动之后,chroot限制能使用的bin程序 |
| 28 | +RUN mkdir /home/ctf/bin && \ |
| 29 | + cp /bin/sh /home/ctf/bin && \ |
| 30 | + cp /bin/ls /home/ctf/bin && \ |
| 31 | + cp /bin/cat /home/ctf/bin && \ |
| 32 | + cp /usr/bin/timeout /home/ctf/bin |
| 33 | + |
| 34 | +# 部署xinetd服务 |
| 35 | +COPY ./config/ctf.xinetd /etc/xinetd.d/ctf |
| 36 | +RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail |
| 37 | + |
| 38 | +# 复制容器启动脚本 |
| 39 | +COPY ./service/docker-entrypoint.sh / |
| 40 | +RUN chmod +x /docker-entrypoint.sh |
| 41 | + |
| 42 | +# 部署程序 |
| 43 | +COPY ./src/attachment /home/ctf/attachment |
| 44 | + |
| 45 | +# 初始化flag |
| 46 | +RUN chown -R root:ctf /home/ctf && \ |
| 47 | + chmod -R 750 /home/ctf && \ |
| 48 | + touch /home/ctf/flag && \ |
| 49 | + chmod 744 /home/ctf/flag |
| 50 | + |
| 51 | +# [可选]指定对外暴露端口,对于GZCTF等平台,强制EXPOSE可能会造成非预期端口泄露,请酌情启用 |
| 52 | +# EXPOSE 9999 |
| 53 | + |
| 54 | +# 指定容器入口点 |
| 55 | +ENTRYPOINT ["/bin/bash","/docker-entrypoint.sh"] |
0 commit comments