声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
文章首发于个人博客:https://mybeibei.net,点击最下方“阅读原文”可直接跳转查看。
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
generic
86 Bytes
© Guge's Blog
部署完成后,访问 http://yourvpsip:8000 即可。
平台设置
首次访问,设置Admin管理员账号及密码后,登录即可。
然后进入Admin->Challenges即可进行题目添加。
-
Choose Challenge Type(选择挑战类型,一般选Standard)
-
Name (题目名称)
-
Category (题目类别,如Web、PWN等)
-
Message (题目说明)
-
Value (题目分值)
然后点击 Create 进入下一个页面:
-
设置你的flag值,可以为动态/静态两种。
-
Files里可以上传题目的附件,比如流量分析题目的pcap流量包或压缩包等。
-
Hints里可以填写提示。
-
Requirements里可以设置题目之间的关联关系,比如题目一做完后才能看到题目二,以此类推。
一切设置完毕后,默认State为Hidden(隐藏状态),通过将其设置为Visible(可见)后,用户即可在Challenges中看到‘放出’的题目。
PWN题搭建
以项目ctf_xinetd为例,
https://github.com/Eadom/ctf_xinetd
克隆该项目后,
docker build -t pwn-docker:16.04 .
generic
34 Bytes
© Guge's Blog
若想搭建为18.04的环境,将dockerfile文件里面FROM ubuntu:16.04改为 FROM ubuntu:18.04
然后创建容器,并设置端口转发:
docker run -p 0.0.0.0:9997:9999 pwn-docker:16.04
generic
48 Bytes
© Guge's Blog
测试看看:
$nc 0.0.0.09997
ls
bin
dev
flag
lib
lib32
lib64
pwn
cat flag
ctf{please_initialize_this_flag}
generic
94 Bytes
© Guge's Blog
如何设置你的PWN题目
可用docker cp命令替换/home/ctf目录下的helloworld,并修改/etc/xinetd.d/ctf里面的题目名称即可。
一次性搭建多个PWN题目
克隆项目:
git clone https://github.com/giantbranch/pwn_deploy_chroot.git
generic
62 Bytes
© Guge's Blog
然后仅需三步就可以一次性搭建多道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"}
generic
304 Bytes
© Guge's Blog
然后启动docker即可:
docker-compose up --build -d
generic
28 Bytes
© Guge's Blog
一道题目对应一个独立的端口。
感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~
====正文结束====
原文始发于微信公众号(骨哥说事):Vulnerability Wiki & CTF 练习平台搭建-2
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论