CanHackMe | CTF平台搭建记录
2019-09-15 12:25:03 Author: mp.weixin.qq.com(查看原文) 阅读量:97 收藏

起因

"最近好忙呀...又准备办一场学校的CTF比赛..."

在Github上发现了一个开源的CTF平台,界面很好看,而且是php写的,所以决定搭建一下折腾折腾。

项目地址:https://github.com/safflower/canhackme

项目官网:https://canhack.me

搭建记录

环境要求

  • Ubuntu 16.04

  • Apache 2.4

  • PHP 7.3


安装Apache2.4

sudo apt updatesudo apt install apache2root@linuz:/# apache2 -vServer version: Apache/2.4.18 (Ubuntu)Server built:   2019-08-26T13:43:29

 安装PHP7.3

sudo apt-get install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt-get updatesudo apt-get install -y php7.3
root@linuz:/# php -vPHP 7.3.9-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:04) ( NTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.3.9, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.9-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

安装完记得测试一下。

安装Sqlite3

sudo apt install sqlite3

安装php-sqlite3模块

sudo apt install php7.3-sqlite3

修改php.ini文件

/etc/php/7.3/apache2/php.ini

945行,把前面的分号去掉

extension=sqlite3

安装php-mbstring模块

sudo apt install php-mbstring

修改php.ini文件

/etc/php/7.3/apache2/php.ini

923行,把前面的分号去掉

extension=mbstring

克隆canhackme项目

git clone https://github.com/area39/canhackme.git

部署的时候注意权限问题,还有把.git文件夹删除,还有必须得把.htaccess这个文件放到网站根目录

修改apache2配置文件

vim /etc/apache2/apache2.conf

修改(164~168行),把路径改成你实际的网站根目录

AllowOverride None改为AllowOverride ALL

<Directory /var/www/html>        Options Indexes FollowSymLinks        AllowOverride ALL        Require all granted</Directory>

开启mod_rewrite模块

sudo a2enmod rewrite

然后重启一下apache

service apache2 restart

导入数据库

进入到@import/confs/目录下,导入init.sql文件

sqlite3 .common.db < init.sqlroot@linuz:/var/www/html/@import/confs# sqlite3 .common.dbSQLite version 3.11.0 2016-02-15 17:29:24Enter ".help" for usage hints.sqlite> .dumpPRAGMA foreign_keys=OFF;BEGIN TRANSACTION;CREATE TABLE `users` (        `user_no` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,        `user_name` TEXT NOT NULL UNIQUE,        `user_email` TEXT NOT NULL UNIQUE,        `user_password` TEXT NOT NULL,        `user_comment` TEXT NOT NULL,        `user_score` INTEGER NOT NULL,        `user_signed_up_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP);......sqlite> .exit

然后更改confs目录权限为www-data

sudo chown -R www-data:www-data confs/

此时你的CanHackMe虽然能访问了,但其实还有一堆问题

后续完善

写入.hash_salt.txt文件

加盐加盐加盐,内容自己写就好!!!

注意是在@import/confs/目录下创建.hash_salt.txt文件

recaptcha

因为作者是国外的嘛,所以加了个Google的recaptcha验证功能,然后,你懂的...这是个大坑

先注册一个recaptcha(第3版)

地址:https://www.google.com/recaptcha

把域名或者IP填好,然后你会拿到两个key

网站的配置文件为common.php

路径:@import/confs/common.php

在这个配置文件里,你可以修改一些网站的基本信息,包括网站URL,作者信息等

把拿到的key替换一下

第一条密钥替换common.php文件里的recaptcha_sitekey内容

第二条密钥编辑成.recaptcha_secretkey.txt文件,放到@import/confs路径下

在国内访问解决方法:

修改网站php文件,把https://www.google.com改成

https://www.recaptcha.net

需要修改的几个文件

  • @import/init.php

  • @import/views/challenges/challenges.php

  • @import/views/users/settings.php

  • @import/views/users/sign-in.php

  • @import/views/users/sign-up.php

有动手能力强的老哥如果能把recaptcha这个验证功能去除的话一定要记得联系我,哈哈哈哈。

关于flag

flag默认的格式为CanHackMe{...}且长度不小于10位数,具体可以在init.php这个文件中修改。

大概在493行,把CanHackMe修改成你想要的格式。

创建题目

这个平台没有后台,所以必须直接访问sqlite数据库然后添加通知和题目。

添加一个题目:

sqlite> INSERT INTO "chals" VALUES(1,'name','title','contents',100,'CanHackMe{xxxxxxxxxxxx}','web','1','2019-09-12');

创建公告

添加一个通知:

sqlite> INSERT INTO "notis" VALUES(1,'公告内容',1,'2019-09-12');

总结

搭建过程中遇到几个奇奇怪怪的问题,和作者反馈后,作者小改动了几次,所以安装的时候还是clone我保存的以前的代码吧。

https://github.com/Area39/canhackme

如果想汉化,那就自己改一下源代码吧。

最后附一张安装成功的图。


文章来源: https://mp.weixin.qq.com/s?__biz=MzI2MTI1MDQ5Mw==&mid=2247483711&idx=1&sn=ce56b89a26a8cc1539303fe882a43518&chksm=ea5c0deddd2b84fba86410784b96e515bd3de543dc78667ff017c47cf955c244fcfa2d79d10c&token=2132406680&lang=zh_CN#rd
如有侵权请联系:admin#unsafe.sh