CanHackMe | 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 update
sudo apt install apache2
root@linuz:/# apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built:   2019-08-26T13:43:29

安装PHP7.3

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.3

root@linuz:/# php -v
PHP 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 Group
Zend 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.sql
root@linuz:/var/www/html/@import/confs# sqlite3 .common.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> .dump
PRAGMA 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

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

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


我堂堂天钧是不会给学长们出二次加密,写隐,SQL注入,音频写隐的题的!!!

原文发布于微信公众号 - 渗透云笔记(shentouyun)

原文发表时间:2019-09-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券