随记体验 · 2023年9月20日 0

Vulnerability Wiki & CTF 练习平台搭建-2

CTF练习/比赛平台

H1ve是基于CTFd进行二次开发,在保留CTFd稳定性的情况下,提供优化版前端界面,队伍隔离容器,动态Flag机制的CTF平台,具备解题、攻防对抗模式。

其中,解题赛部分对Web和Pwn题型,支持独立题目容器及动态Flag防作弊。攻防对抗赛部分支持AWD一键部署,并配备炫酷地可视化战况界面。

项目地址:https://github.com/D0g3-Lab/H1ve

平台部署

git clone https://github.com/D0g3-Lab/H1ve.git
cd H1ve
docker-compose -f single.yml up

部署完成后,访问 http://yourvpsip:8000 即可。

平台设置

首次访问,设置Admin管理员账号及密码后,登录即可。

然后进入Admin->Challenges即可进行题目添加。

file

  • Choose Challenge Type(选择挑战类型,一般选Standard)
  • Name (题目名称)
  • Category (题目类别,如Web、PWN等)
  • Message (题目说明)
  • Value (题目分值)

然后点击 Create 进入下一个页面:

file

  • 设置你的flag值,可以为动态/静态两种。
  • Files里可以上传题目的附件,比如流量分析题目的pcap流量包或压缩包等。
  • Hints里可以填写提示。
  • Requirements里可以设置题目之间的关联关系,比如题目一做完后才能看到题目二,以此类推。

file

一切设置完毕后,默认State为Hidden(隐藏状态),通过将其设置为Visible(可见)后,用户即可在Challenges中看到‘放出’的题目。

file

PWN题搭建

以项目ctf_xinetd为例,
https://github.com/Eadom/ctf_xinetd
克隆该项目后,

docker build -t pwn-docker:16.04 .

若想搭建为18.04的环境,将dockerfile文件里面FROM ubuntu:16.04改为 FROM ubuntu:18.04

然后创建容器,并设置端口转发:

docker run -p 0.0.0.0:9997:9999 pwn-docker:16.04

测试看看:

$nc 0.0.0.0 9997
ls
bin
dev
flag
lib
lib32
lib64
pwn
cat flag
ctf{please_initialize_this_flag}

如何设置你的PWN题目

可用docker cp命令替换/home/ctf目录下的helloworld,并修改/etc/xinetd.d/ctf里面的题目名称即可。

一次性搭建多个PWN题目

克隆项目:

git clone https://github.com/giantbranch/pwn_deploy_chroot.git

然后仅需三步就可以一次性搭建多道pwn题,并自动生成对应的flag:

  • 将所有pwn题目放入bin目录(注意名字不要带特殊字符,因为会将文件名作为linux用户名)
  • python initialize.py
  • docker-compose up –build -d

成功部署的话会显示如下:

$python initialize.py 
{"flag": "flag{9c900d02-8567-4e16-8952-47a92d2dc06a}", "port": 10000, "filename": "pwn1"}
{"flag": "flag{6f785f9e-fb19-4b54-9c6c-dd9b6f62041a}", "port": 10001, "filename": "pwn1_copy1"}
{"flag": "flag{c65a3be4-a9d1-4122-b981-7a241ca73027}", "port": 10002, "filename": "pwn1_copy2"}

然后启动docker即可:

docker-compose up --build -d

一道题目对应一个独立的端口。
file

file