Joe1sn / elieen

Elieen:使用JSON配置CTF-Pwn中的Docker容器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ELIEEN:使用JSON配置CTF-Pwn中的Docker容器

配置说明

之前大家都爱用的:pwn_deploy_chroot要修改版本或者libc很麻烦,要到处找配置修改,所以我想的就是让所有配置信息都在config.json中,这样就可以简化配置流程了

将要部署的二进制文件放在该项目目录下

可以在config.json中修改

{
  "pwn_dockers": [
    {
      "project_path": "./pwn1/",
      "filename": "babyheap",
      "image_name": "babyheap",
      "docker_username": "pwn1",
      "image_name":"babyheap",
      "port": 9999,
      "docker_info": {
        "os": {
          "release": "ubuntu",
          "version": "16.04"
        },
        "flag": "test1",
        "expose": 8000,
        "xinetd_config": "xinetd.conf"
      },
      "xinetd_info": {
        "service_name": "ctf",
        "user": "root",
        "protocol": "tcp",
        "server_arg": "--userspec=1000:1000 "
      }
    },
    {
      "project_path": "./pwn2/",
      "filename": "babyheap",
      "docker_username": "pwn2",
      "image_name": "babyheap2",
      "port": 8000,
      "docker_info": {
        "os": {
          "release": "ubuntu",
          "version": "18.04"
        },
        "flag": "test2",
        "expose": 8001,
        "xinetd_config": "xinetd.conf"
      },
      "xinetd_info": {
        "service_name": "ctf",
        "user": "root",
        "protocol": "tcp",
        "server_arg": "--userspec=1000:1000 "
      }
    }
  ]
}

除了 加粗的 大多数使用默认参数就行

  • root_dir: 要打包文件有所在根目录

  • pwn_dockers:pwn类配置

  • project_path:[nullable] docker相关资源的文件夹,也是最后Dockerfile生成的文件夹

  • filename:二进制文件名字

  • docker_username:docker中运行程序的用户名

  • image_name:镜像文件名称,对ctfd-whale很重要

  • port:docker向外暴露的内部的端口

  • docker_info:docker相关信息

    • os:docker操作系统相关,一般为发行版
      • release:操作系统发布版本
      • version:版本号
    • flag:原始flag字符串,在setting.py中会自动计算md5值
    • expose:外界连接的端口
    • xinetd_config:xinetd的配置文件名字
  • xinetd_info

    • service_name:xinetd服务名称
    • user:用户
    • port:xinetd作用的端口
    • protocol:通讯协议
    • server_arg:服务参数

一般配置过程变量使用json中的参数 -p expose:port

运行

python3 main.py

得到docker-compose.yml

sudo docker-compose build

然后使用sudo docker images就能看到构建好的docker了

feature

  • 修改对应libc版本只需要设置ubuntu版本即可,如

    Ubuntu版本 Glibc版本
    ubuntu16 libc-2.23.so
    ubuntu18 libc-2.27.so
    ubuntu20 libc-2.31.so
  • 该项目构建的docker能够直接在ctfd-whale中启用

    因为ctfd-whale是通过 $FLAG 传递flag的,docker在启动时的 service.sh 脚本会读取环境变量写到对应的flag文件

About

Elieen:使用JSON配置CTF-Pwn中的Docker容器

License:Apache License 2.0


Languages

Language:Python 100.0%