前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CanHackMe | CTF平台搭建记录

CanHackMe | CTF平台搭建记录

作者头像
天钧
发布2019-09-16 17:57:21
1.6K0
发布2019-09-16 17:57:21
举报
文章被收录于专栏:渗透云笔记渗透云笔记

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

项目地址:https://github.com/safflower/canhackme 项目官网:https://canhack.me

搭建记录

环境要求

  • Ubuntu 16.04
  • Apache 2.4
  • PHP 7.3

安装Apache2.4

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
sudo apt install sqlite3

安装php-sqlite3模块

代码语言:javascript
复制
sudo apt install php7.3-sqlite3

修改php.ini文件

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

945行,把前面的分号去掉

代码语言:javascript
复制
extension=sqlite3

安装php-mbstring模块

代码语言:javascript
复制
sudo apt install php-mbstring

修改php.ini文件

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

923行,把前面的分号去掉

代码语言:javascript
复制
extension=mbstring

克隆canhackme项目

代码语言:javascript
复制
git clone https://github.com/area39/canhackme.git

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

修改apache2配置文件

代码语言:javascript
复制
vim /etc/apache2/apache2.conf

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

AllowOverride None改为AllowOverride ALL

代码语言:javascript
复制
<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride ALL
        Require all granted
</Directory>

开启mod_rewrite模块

代码语言:javascript
复制
sudo a2enmod rewrite

然后重启一下apache

代码语言:javascript
复制
service apache2 restart

导入数据库

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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数据库然后添加通知和题目。

添加一个题目:

代码语言:javascript
复制
sqlite> INSERT INTO "chals" VALUES(1,'name','title','contents',100,'CanHackMe{xxxxxxxxxxxx}','web','1','2019-09-12');

创建公告

添加一个通知:

代码语言:javascript
复制
sqlite> INSERT INTO "notis" VALUES(1,'公告内容',1,'2019-09-12');

总结

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

https://github.com/Area39/canhackme

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

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


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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档