使用Centos7搭建CTF平台

为了学校社团开学纳新,给自己社团举行团队CTF比赛,在暑假提前准备了一下比赛平台。虽然用了CTFd,但是FBCTF也是个很棒的比赛平台,界面很炫酷,但是资源占用比较大,在入门级服务器的环境下,还是有些吃不消的,再加上一直用CTFd,比较熟悉,所以最后还是选择了CTFd。

本人会在文章中提供本次实验所需工具的下载地址或文件。

在搭建CTF平台之前服务器已经安装网站所需的各样服务,依托于这些服务再搭建CTF平台,如果不会搭建网站所需平台,可自行Baidu、Google(爬墙)、Bing一下。哈哈~😄后期本人会继续撰写基础文章,提供给各位学习。下面正式开始吧!

1.安装pip

yum install -y python-pip

 

2.安装Flask

pip install Flask

 

3.创建数据库

数据库名:CTFd
字符编码:utf8

 

4.创建用户

用户名:ctfd
密码:123456

 

 

5.用户数据库授权


6.下载CTFd源代码

下载地址:
https://github.com/CTFd/CTFd/archive/master.zip

 

7.解压文件、修改配置

 

切换目录至"C:\CTFd-master\CTFd" 使用Notepad++编辑(也可使用记事本打开)

 

8.修改配置文件

原代码:
    SQLALCHEMY_DATABASE_URI = os.environ.get('mysql://ctfd:mjs.ctfd.2018@localhost/CTFd?charset=utf8') or 'sqlite:///{}/ctfd.db'.format(os.path.dirname(os.path.abspath(__file__)))
修改为:
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'mysql+pysql://数据库用户名:用户密码@localhost/数据库名?charset=字符编码'.format(os.path.dirname(os.path.abspath(__file__)))
举例:
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'mysql+pysql://ctfd:123456@localhost/CTFd?charset=utf8'.format(os.path.dirname(os.path.abspath(__file__)))

 

 

 

HOST="网站域名或服务器IP地址"
HOST="www.domain.com"

 

9.使用Winscp上传CTFd-master

使用Winscp上传CTFd-master至/var/www/html目录下(上传之前更改文件夹名称为CTFd)

10.切换目录、文件夹递归赋权

依次输入如下命令(不包含“序号”):
1、cd /var/www/html
2、chmod -R 777 CTFd/

11.安装CTFd

1.切换目录:
cd CTFd/
2.执行安装
./prepare.sh
python server.py

 

本机访问:127.0.0.1:4000就可以访问,如果需要让其他主机与外网访问,则需要安装gunicorn

pip install gunicorn

gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()" #必须在/var/www/html/CTFd目录下执行此命令

 

12、访问CTF平台

方式1:
IP:8000
X.X.X.X:8000

方式二:
域名:8000
www.2020oz.com:8000

13、第一次访问注册管理员账户

注册完成后,点击Admin,进入后台,即可管理。

如有任何问题可在下方评论区留言,本人会第一时间解答。

文章使用工具:


序号 名称 作用 官网地址(下载地址)
1 Notepad++ 文本编辑器 https://notepad-plus-plus.org/
2 Xshell 远程登录 http://www.netsarang.com/download/main.html
3 Winscp 远程服务器文本编辑 https://winscp.net/eng/download.php
以上链接均为应用官方网站
  • 转载需授权,请联系540616029@qq.com

发表评论

1条评论

  1. 楼主你好,我想知道我建立好ctf的站点之后应该怎么做呀,如何上传题和自己自定义页面之类的呀,谢谢你啦,真的想请问下,我是初学,谢谢啦,真的感谢!