ctfd搭建
CTFd
0x00 前言
搭个CTF平台,看能不能带动一下学校的CTF参与度。
一个下午都在搭这个平台:O 抓瞎摸索,最后成功用Apache+mod_wsgi也算是功德圆满了。
进入正题:
- 系统: CentOS release 6.8 (Final)
- Apache: Apache/2.2.15 (Unix)
- Mysql: Ver 14.14 Distrib 5.1.73
- Python: 2.7.10
0x01 下载项目&环境配置
|
1
|
git clone https://github.com/isislab/CTFd.git |
根据文档4个大步骤:
Install:
- ./prepare.sh to install dependencies using apt.
- Modify CTFd/config.py to your liking.
- Use python serve.py in a terminal to drop into debug mode.
- Here are some deployment options
apache和mysql的搭建我不再赘述,python系统自带是2.6,我升到2.7,可参见这里,记得还要装下PyMySQL。
0x02 安装&排错
环境配置好了之后运行(root权限)CTFd目录下的./prepare.sh
之后修改CTFd/config.py文件,我的配置文件如下:

进mysql里新建一个数据库:
|
1
2
|
CREATE DATABASE CTFd;exit; |
然后
|
1
2
3
4
5
6
|
# python serve.py * Running on http://0.0.0.0:4000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger pin code: 286-009-634 |
这里先别进网站,再次进入mysql数据库,输入下面的命令:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
USE CTFd;show tables;ALTER TABLE awards CONVERT TO CHARACTER SET utf8;ALTER TABLE challenges CONVERT TO CHARACTER SET utf8;ALTER TABLE config CONVERT TO CHARACTER SET utf8;ALTER TABLE containers CONVERT TO CHARACTER SET utf8;ALTER TABLE files CONVERT TO CHARACTER SET utf8;ALTER TABLE keys CONVERT TO CHARACTER SET utf8;ALTER TABLE pages CONVERT TO CHARACTER SET utf8;ALTER TABLE solves CONVERT TO CHARACTER SET utf8;ALTER TABLE tags CONVERT TO CHARACTER SET utf8;ALTER TABLE teams CONVERT TO CHARACTER SET utf8;ALTER TABLE tracking CONVERT TO CHARACTER SET utf8;ALTER TABLE wrong_keys CONVERT TO CHARACTER SET utf8; |
把编码改成utf8,之后再访问http://IPorDomain:4000/进行配置,这样中文就不会变成??????了
如果一切都OK的话,就开始转移到Apache上去,先安装下mod_wsgi,Centos需要自己编译安装,具体可以看这里在 Centos 下安裝 mod_wsgi
安装好mod_wsgi后还要配置下CTFd目录下的wsgi.py文件,改成如下:
|
1
2
3
4
5
|
import syssys.path.insert(0, '/var/www/html/CTFd')from CTFd import create_appapplication = create_app() |
装好之后配置下Apache:
|
1
|
vim /etc/httpd/conf/httpd.conf |
httpd.conf这个文件篇幅相当长,具体内容可以参见这里,写的很详细:
Web服务基础二之Apache主配置文件httpd.conf
主要有三部分(Section),
- Global Environment
- Main server configuration
- Virtual Hosts
我们只需要在Section 1 中加入一句
|
1
2
3
4
5
|
LoadModule auth_basic_module modules/mod_auth_basic.so...LoadModule version_module modules/mod_version.so#在这个位置加入下面这句,就是加载wsgi模块LoadModule wsgi_module modules/mod_wsgi.so |
在Section 2中加入这句:
|
1
|
WSGISocketPrefix /var/run/wsgi |
然后在Section 3 中编辑虚拟主机:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<VirtualHost *:80> ServerName ctf.ifuryst.com WSGIDaemonProcess CTFd user=apache group=apache threads=5 WSGIScriptAlias / /var/www/html/CTFd/wsgi.py <Directory /var/www/html/CTFd> WSGIProcessGroup CTFd WSGIApplicationGroup %{GLOBAL} Order deny,allow AllowOverride All #Require all granted Allow from all </Directory></VirtualHost> |
之后重启Apache
|
1
|
/etc/init.d/httpd restart |
之后访问http://ctf.ifuryst.com/先后出现了500和503的错误,纳闷了半天,去查看错误日志
|
1
|
tail -n 20 /etc/httpd/logs/error_log |
我遇到的错误分别是下面几个:
|
1
2
3
|
[Tue Sep 20 06:11:10 2016] [error] [client 58.23.13.241] IOError: [Errno 13] Permission denied: '.ctfd_secret_key'[Tue Sep 20 06:12:26 2016] [error] [client 58.23.13.241] IOError: [Errno 13] Permission denied: '/var/www/html/CTFd/CTFd/logs/keys.log'[Tue Sep 20 06:13:39 2016] [error] [client 58.23.13.241] IOError: [Errno 13] Permission denied: '/var/www/html/CTFd/CTFd/logs/logins.log' |
CTFd/config.py里的
|
1
2
3
|
with open('.ctfd_secret_key', 'a+') as secret:#改为绝对路径with open('/var/www/html/CTFd/.ctfd_secret_key', 'a+') as secret: |
CTFd/logs目录下的三个日志文件全部给足权限(读写权限),可以直接:
|
1
|
chmod -R 777 CTFd/logs |
不出意外的话,这样就搞定了。
ctfd搭建的更多相关文章
- CTFd+ubuntu service搭建等待更新
CTFd是一款基于Apache2.0的协议的开源CTF平台,最新版本目前为1.20.该平台功能强大,基本上能够满足目前的CTF竞赛需求,同时,该平台提供了强大的插件功能,可以自己进行插件开发实现自己的 ...
- CTFd平台搭建以及一些相关问题解决
CTFd平台搭建以及一些相关问题解决 一.序言 因为想给学校工作室提高一下学习氛围,随便带学弟学妹入门,所以做了一个ctf平台,开源的平台有CTFd和FBCTF,因为学生租不起高端云主机所以只能选择占 ...
- CTFd平台部署
学校要办ctf了,自己一个人给学校搭建踩了好多坑啊..这里记录一下吧 心累心累 这里只记录尝试成功的过程 有些尝试失败的就没贴上来 为各位搭建的时候节省一部分时间吧. ubuntu18搭建 0x01 ...
- 2019.11.18CTFD搭建记录
### 0x01 实验室纳新,准备在自己服务器搭建个ctfd给新生们玩玩,忙活了一天orz[大一刚开学就搭建过没这么费力啊..] 现在大二了没想到能折腾一天... 直接说下我踩的坑吧,给后来的人们说说 ...
- CVE-2020-7245 CTFd v2.0.0 – v2.2.2漏洞分析复现
CVE-2020-7245 CTFd v2.0.0 – v2.2.2漏洞分析复现 一.漏洞介绍 在 CTFd v2.0.0 - v2.2.2 的注册过程中,如果知道用户名并在 CTFd 实例上启用 ...
- CTFD平台部署自制题目指北(灌题)
给实验室同学搭建的CTFD平台用于内部训练和CTF的校赛,为了循序渐进当然是先内部出一些简单入门的题目,但是网上大部分关于CTFD平台的都只是部署,而关于题目放置的内容却很少,虽然这个过程比较简单,但 ...
- Online Judge(OJ)搭建(第一版)
搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
随机推荐
- 190628 - 解决新版本LastPass没有谷歌套件时打开就闪退的问题.md
目录 解决新版本LastPass没有谷歌套件时打开就闪退的问题 可用解决方案 可用解决方案3 可用解决方案2 可用解决方案1 尝试安装 碰到的问题列表 问题现象 解决新版本LastPass没有谷歌套件 ...
- SQL学习(四)Where语句中的各种匹配方式
在where语句中,我们需要制定各种条件,条件的各种组合需要用到不同的关键字 一.单条件 如:select * from ticket where name='测试' 二.多条件 1.和(and) 如 ...
- iOS去除数组中重复的model数据
// 去除数组中model重复 ; i < self.selectedModelArray.count; i++) { ;j < self.selectedModelArray.count ...
- java:svn
1.配置: 在windows系统中,操作svn的工具最长用的是小乌龟svn 服务器端(项目所在的服务器上):在java开发中几乎所有的服务器为Linux系统 需要在Linux系统中进行安装 1.修改h ...
- Python浅拷贝与深拷贝(可变对象与不可变对象)
第一次遇到深拷贝和浅拷贝的问题是用python在一个for循环中对一个list赋值,使用的语句是 a = b 这个b会不断带入循环,每次计算得到,最后发现list乱七八糟的,后来才发现,python中 ...
- 5分钟快速安装Redmine项目管理软件
公司还在使用Excel.project.word来管理项目吗?时间一长.项目参与的人多.就出现了断断续续无法连续跟踪的问题.终于忍受不了公司这种陈旧的项目管理手段了,于是花了一些时间研究了市面上常见的 ...
- Ajax异步上传在SSM框架中的应用
最近在做毕业设计,由于毕设中要实现图片上传和视频上传的功能.突然发现原来的Form表单中的file已经满足不了我了,于是在一番折腾之后终于让我找到了一个简便的上传方式.下面来和大家分享一下我的过程. ...
- Python学习【day01】- Python初识
Python下载:https://www.python.org/downloads/ 下载后进行安装,安装后的Python我们称之为Python解析器 1.打印“Hello World” 安装后的Py ...
- 忘记虚拟机中Linux的登录密码解决办法
一.重启系统,在开机过程中,快速按下键盘上的方向键↑和↓.目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停. 2.使用↑和↓将选择行设置为第一行(背景高亮即为选中),按下键盘上 ...
- win10自带虚拟机的使用(Hyper-v)
昨天刚发现的觉得特别好用,故推荐一下,跟VM虚拟机的使用方法是一样的 1.点击开始菜单中的<设置>图标,进入设置页码 2.点击<应用>图标,进入应用页码,并找到程序和功能 3. ...