记一次搭建CTF pwn靶场的经过。

00 调查

在常用搜索引擎中搜索一下,看到了CTFd这个开源框架很受欢迎,支持自定义插件、主题,还有赵师傅的CTFd-Whale这个支持动态靶机的插件。简直为懒人开箱即食打造,话不多说开搞。

01 曲折

网上一搜一大把关于搭建CTFd和CTFd-Whale的教程,但是这个插件是2年前开源的,文章也大多集中在2年前。不过也翻到了几篇去年和今年上半年的文章,CTFd的版本大多是3.3.0或3.3.1,而此时CTFd的最新版本是3.4.0(其实就隔了1-2个版本),但是强迫症想体验最新版,于是:

坑1:

docker-compose版本过新。

因为基于Docker是最方便的,所以用了基于Docker的方案,Docker的安装采用了官网的方案:

好家伙,我看到Docker Compose的Github Release上的最新版本是2.1.0,忍不住装了最新版。

然后下载CTFd以及CTFd-Whale的repo,并开始docker-compose,结果遇到这个问题

1
Error response from daemon: Could not attach to network ctfd_with_ctfd-whale_frp-containers: rpc error: code = PermissionDenied

用的root用户起的docker和network,能力有限,实在没搞懂rpc怎么就PermissionDenied。

后来看到Err0rCM师傅的文章中提到了一些坑点,其中的一句"似乎docker和系统的版本会有影响"让我恍然大悟,之后使用Vicosna师傅文章中安装Docker和Docker-compose的方法,就没有这个问题了。

1
2
# Docker: 适用于Ubuntu,Debian,Centos等大部分Linux,会3小时同步一次Docker官方资源
curl -sSL https://get.daocloud.io/docker | sh
1
2
3
# Docker Compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

因为版本问题折腾了很久,还从头来了好多次。。。

坑2:

CTFd repo的选择。

新版本强迫症已经治好了,不敢乱用新版本了,谁知道会出什么幺蛾子,毕竟能用是第一位。

  • CTFd最新版本3.4.0:没有用这个,怕和CTFd-Whale插件出现什么兼容性问题,还是用各位师傅的版本最稳
  • 有些师傅的repo可能是有点旧,或者和我系统组件不兼容之类的,会在docker build阶段出现 apk add python ERROR: unable to select package看上去像是网络问题的错误,时间紧迫没有再有限时间搜到解决方法,放弃之
  • 最后用了Vicosna师傅的版本,挺稳的

02 搭建

参考Vicosna师傅的文章就好,很详细了

03 出题(pwn方向)

使用TaQini师傅的pwn_docker快速部署工具

  • 首先生成docker镜像

    1
    
    $ ./deploy.py your_pwn_challenge docker_REPOSITORY_name
    

    然后可以通过docker images看到刚刚生成的镜像

  • 然后新建题目,题目类型为dynamic_docker,并进行如下配置:

    1
    2
    3
    
    Docker Image: 刚刚生成的镜像名
    Frp Redirect Type: Direct
    Frp Redirect Port: 9999
    
  • 然后注意这种动态靶机的题目,静态flag空着就行,whale插件会通过环境变量下发随机flag到靶机,exp可以打通

  • 以上的方法适合flag和elf分离的题目,而且每个instance的flag都是不同的;如果flag在elf中,题目类型用默认,flag用静态flag就好

04 主题

使用了neon主题,还挺好看的

05 注意点:

  1. 使用赵师傅的CTFd pull docker images的时候,不知道是因为CTFd的版本较旧还是我没有开镜像加速,有几个下载条贼慢。Vicosna师傅的CTFd和yichen师傅的CTFd pull docker images的时候就挺快。

06 参考文章:

  1. CTFd最新动态靶场环境部署笔记 - Vicosna师傅
  2. CTFd&ctfd-whale动态靶机搭建与维护 - yichen师傅
  3. CTFd-Whale 推荐部署实践 - zhaoj师傅
  4. CTFD支持动态靶机的搭建笔记 - Err0rCM师傅