GZ-CTF平台pwn题目部署
阿里云开启镜像仓库
找到容器镜像服务的控制面板开启个人版实例
之后创建命名空空间
点击"创建镜像仓库"
记得将仓库类型选择为公开
pwn题目镜像制作
使用github上gzctf docker模板这个项目进行docker 制作
https://github.com/CTF-Archives/ctf-docker-template
pwn-ubuntu_16.04
环境说明
提供 Ubuntu 16.04 GLIBC 2.23 的基础环境,并已经添加 lib32z1 + xinetd 软件包,并基于 xinetd 实现服务转发,默认暴露端口位于9999
实现:当选手连接到对应端口(默认为9999端口,默认选手使用 netcat )的时候,运行 程序文件,并将会话转发至选手的连接
镜像做到:
选手通过端口连接到容器/靶机
xinted服务检测到连接,启动一个 chroot 会话
chroot 通过参数 --userspec=1000:1000 /home/ctf 限制了程序运行时的账户权限,并更改了程序运行时的root根目录环境位置为 /home/ctf ,然后在限制环境中启动程序
xinted 将程序会话转发给选手的连接
如何使用
将程序文件放入 ./src 目录即可,文件名请修改为 attachment 作为文件名,便于镜像定位程序位置
如果需要更改为自己的文件名,需要在 ./config/ctf.xinetd、./Dockerfile 和 ./service/docker-entrypoint.sh 中进行修改
程序放置进 ./src 目录之后,执行
#bash
docker build .
最简单的方法就是将题目附件命名为attachment,然后使用
docker build -t imagename .
这个命令进行docker 镜像的制作,制作完以后就可以上传到阿里云镜像,步骤如下:
将镜像推送到Registry
$ docker login --username=username 镜像地址
$ docker tag [ImageId] 镜像地址/命名空间名称/仓库名称:[镜像版本号]
$ docker push 镜像地址/命名空间名称/仓库名称:[镜像版本号]
上面的命令,你可以点击下图的仓库名称,里面会有使用的说明
最后平台部署