搭建H1ve-ctfd以及如何部署题目
前言:
之前都是学长搭建的平台给我们做练习,时间过的好快,我现在已经变成学长了,为了学弟学妹们能学到知识,我就利用一下docker搭建ctfd,顺便记录一下过程,以免之后再搭建忘记。
0x00:搭建环境
1.Centos 7 64位
2.Docker
3.python2.7
0x01:搭建过程
安装docker
安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bind-utils
设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
sudo yum install docker-ce
启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
验证是否安装成功
docker version
以上的步骤按照步骤走一般没问题,不会遇到错误什么的(亲测),既然docker安装好了,接下来就安装docker-compose
____________更新
安装docker-compose
建议安装这一种来安装
博客如下:
https://www.cnblogs.com/lywJ/p/10716062.html
安装python-pip
yum -y install epel-release
yum -y install python-pip
检查是否安装成功
pip -V
对安装的pip进行升级
pip install --upgrade pip
这里就很平常一个升级,但是我就遇到了一个报错
ModuleNotFoundError: No module named 'pip._internal',
(自己忘记截图了,就使用大师傅的图)
查了才知道有可能是与旧版冲突才导致了这个报错,我使用的是第一种修复方法:
修复方法:
python -m ensurepip
python -m pip install --upgrade pip
ModuleNotFoundError: No module named ‘pip._internal’ , pip 无法下载软件 解决办法
修复好之后,安装docker-compose
pip install docker-compose
如果报错出现
ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out
使用这个命令即可:
pip --default-timeout=200 install -U docker-compose
但是。。。。我遇到报错却是这样的
用pip安装Python库软件的时候遇到"command 'gcc' failed with exit status 1"
错误问题,看似缺少gcc组件,但是确实在安装之前有执行过yum安装gcc,但是还是有这样的问题,原因便是缺少openssl-devel
支持(PS:虽然我的报错信息没有显示gcc
,但我按照这个命令执行了,确实不会再报错了)
解决方法:
yum install gcc libffi-devel python-devel openssl-devel -y
解决"command ‘gcc’ failed with exit status 1"错误问题
执行完毕之后,再回到之前执行的pip安装docker-compose
安装成功,查看一下版本
注意如果docker-compose版本过低,则无法启动H1ve-ctfd
启动ctfd
既然docker和docker-compose都准备好了,就来下载一下ctfd,之前我们团队qwzf大佬给我推荐了
H1ve--开源攻防训练平台
https://xz.aliyun.com/t/6889
是基于ctfd开放的,而且更帅气,更酷炫,放张图
这一看就被吸引了,这样太帅了,既然就是基于ctfd开放的,那么基本一样,所以我就搭建这个平台:
现在已经开源,感谢大佬们研发出这么帅的网站,可以在服务器中直接下载
git clone https://github.com/D0g3-Lab/H1ve.git
下载好之后进入到目录中,按照Github上的教程走:
docker-compose -f single.yml up
但是。。。。又遇到了问题,继续查:
可以发现这个问题是docker: Error response from daemon: ... : net/http: TLS handshake timeout.
出现这个问题的原因是因为该命令默认从docker远端镜像仓库中拉取镜像,但由于远端仓库的服务器是在国外,我们国内有的用户很可能都访问不了,所以会报错。
解决方法:使用阿里云镜像加速器
按照上面配置镜像加速器的方法复制粘贴即可,接下来进行安装就可以看到很快的速度了
出现这个页面就欧克了
默认的端口是8000
,访问一下服务器的IP地址
终于搭建好了,所说遇到很多问题,但也学到了不少东西。
0x02:部署题目
(吐槽一句,真的要吐了)
MISC和Crypto都好设置
设置好题目,上传附件,添加flag
即可
唯独web题目有点麻烦,其实说麻烦也不是太麻烦,就是有点啰嗦,原本打算用docker去搭建web题,但是看了看服务器的配置还是算了的,就采用apache+MySQL+php来搭建,直接让访问var/www/html目录下的文件就可以了
先来下载MySQL:
注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql命令只是更新Mariadb数据库,并不会安装 MySQL
查看已安装的 Mariadb 数据库版本。
rpm -qa|grep -i mariadb
卸载已安装的 Mariadb 数据库
rpm -qa|grep mariadb|xargs rpm -e --nodeps
查看已安装的 Mariadb 数据库版本,确认是否卸载完成
rpm -qa|grep -i mariadb
下载安装包文件
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装mysql
yum install mysql-server
检查mysql是否安装成功
rpm -qa | grep mysql
启动 mysql 服务
systemctl start mysqld.service #启动 mysql
systemctl restart mysqld.service #重启 mysql
systemctl stop mysqld.service #停止 mysql
systemctl enable mysqld.service #设置 mysql 开机启动
设置密码
root 用户的密码默认是空的,需要及时用 mysql 的 root 用户登录
mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("这里输入root用户密码") where User='root';
mysql> flush privileges;
CentOS7下使用YUM安装MySQL5.6
设置远程主机登录
这个非常重要,如果不设置的话,就算你php配置文件都对,但是还是连接不到数据库的,一定要注意
mysql> use mysql
mysql> select host,user,password from user;
修改host字段的值,将localhost修改成需要远程连接数据库的ip地址,或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库
mysql> update user set host = '%' where user = 'root';
mysql> FLUSH PRIVILEGES;
修改之后,即可连接成功
Host ‘xxx’ is not allowed to connect to this MySQL server.
MySQL安装好之后,就来安装apache,在CentOS和RHEL上,Apache软件包和服务称为httpd
sudo yum install httpd
安装完成后,启用并启动Apache服务:
sudo systemctl enable httpd
sudo systemctl start httpd
下载php,这里我下载的版本是5.6的,如果之后web题涉及到了弱类型,这个版本的php就可以
yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
yum install --enablerepo=remi --enablerepo=remi-php56 php php-gd php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
php -v
centOs7 yum安装php5.6(史上最简)
下载好之后,原本打算再安装一个phpmyadmin,但是爆出了下面的错误,就是安装不了,反正也不是特别需要就不安装了
至此基本就可以了,将你的题目放到/var/www/html目录下,这里还要设置一下目录权限
chmod 711 /var/html/www/web
#web是我自己放置题目的目录
设置好就可以,反正有人遍历目录,启动一下Hive-ctfd
docker-compose -f single.yml up
发现报错。。。。
原因也很简单,就是因为apache占用了80端口,所以我们需要更改一下apache的默认端口即可
打开 /etc/httpd/conf/httpd.conf 文件
把80改为你自己想要设置的端口,如下图我设置的是5555
最后再补充一点:
在Linux中如何导入sql文件
mysql -u 用户名 -p 数据库名 < 数据库名.sql
#这个只是其中的一种方法
- 如果你的配置文件中的主机、账号、密码什么的都对,但还是无法连接,就一定是你在安装MySQL时没有设置远程连接
- 如果发现访问题目时,php源码都直接出现,没有解析,最简单的方法,重新启动一下apache服务即可
sudo systemctl restart httpd
至此,就全部搭建完毕了,写的时候真的感觉不难,但毕竟是第一次搭建,真的也学到不少知识
就记录到这里吧!
搭建H1ve-ctfd以及如何部署题目相关推荐
- Win10环境下基于Hexo的静态博客环境搭建,及其阿里云部署
引言 1.为什么要搭建自己的个人博客 工作和学习过程中,我们经常遇到一些这样或那样的问题,此时我们可能会在网上找到相应的解决方法.但是过了一段时间之后,当我们再次碰到类似的问题时,早已忘记以前是怎么解 ...
- CentOS 7 快速搭建JavaWeb开发环境并部署Spring boot项目(纯干货、详细)
前言: 服务器:阿里云服务器ECS,装载CentOS 7系统 终端模拟工具&文件传输软件:xshell 7 \ xftp 7 IDE: IntelliJ IDEA 2022.1 部分内容参考阿 ...
- 搭建论坛服务器(论坛部署)
搭建论坛服务器(论坛部署) 搭建前期准备条件 linux虚拟安装 Xshell安装 Lnmp集成环境安装(需要下载安装包) PHPwind源文件安装(论坛环境) 这里要说一下,要想使用Xshell里面 ...
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记 - passover【毕成功的博客】 - 51CTO技术博客...
Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记 - passover[毕成功的博客] - 51CTO技术博客
- 在线培训系统搭建,简单成熟的部署方式,助力企业拥有培训平台
现代企业中,由于员工工作节奏加快.人员层次复杂多样,因此具体的培训也总是遇到顾此失彼的情况,而市场中能够使用进行培训的产品和合服务也很多,企业在选择实际培训平台时也面临很多不确定性,这些问题给企业组织 ...
- Windows 11 上从零开始基于 wsl-ubuntu 搭建 AI 学习环境及部署多种私有 ChatGPT
Windows 11 上从零开始基于 wsl-ubuntu 搭建 AI 学习环境及部署多种私有 ChatGPT 0. 背景和简介 1. 安装 wsl-ubuntu 2. (可选)配置清华大学软件源 3 ...
- 群晖python套件包_利用群晖Docker安装ubuntu16.04搭建python网站服务器(部署篇)
在帖子<利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)(地址:http://www.cirdown.com:81/thread-185-1-1.html)&g ...
- 搭建hexo博客并部署到github上
hexo是由Node.js驱动的一款快速.简单且功能强大的博客框架,支持多线程,数百篇文章只需几秒即可生成.支持markdown编写文章,可以方便的生成静态网页托管在github上. 感觉不错. 前端 ...
- idea搭建web项目及tomcat部署总结
该文章为引用文章,原地址为:https://www.cnblogs.com/shindo/p/7272646.html 后面有我自己搭建过程中遇到的问题及解决方案,请参考. 一.创建简单web项目 1 ...
最新文章
- 插入记录时单引号的处理
- pytorch之深入理解collate_fn
- wpf采用Xps实现文档显示、套打功能
- JavaScript HTML DOM - 改变 HTML
- ArcGIS API for JavaScript 4.0(一)
- Ajax — 大事件项目(第二天)
- 【渝粤题库】广东开放大学 互联网营销概论 形成性考核
- hihoCoder #1143 : 骨牌覆盖问题·一
- java调用ole ie_SWT中通过Automatioin的方式访问IE(升级版)
- ffmpeg音频播放代码示例-avcodec_decode_audio4
- python3哪个版本稳定-Python 3.9 发布稳定版本,八大特性学起来!
- 《Java程序员职场全攻略:从小工到专家》连载十五:我们不是爱加班
- linux安装oracle11g步骤_图解 Debian 10(Buster)安装步骤 | Linux 中国
- php操作mysql常用_PHP常用MySql操作
- 独立安装 lamp 兄弟连
- 隐马尔科夫模型HMM自学
- Landsat系列数据级别详解
- Proxy returns “HTTP/1.1 407 Proxy Authentication Required
- MATLAB学习笔记(六)线性方程和线性系统
- tx2 安装opencv4.1.1及opencv_contrib-4.1.1
热门文章
- 【小白学习C++ 教程】八、在C++指针传递引用和Const关键字
- 四、Go语言复合数据类型(上)
- 四十一、Vue项目上手 | 用户管理系统 实现用户修改和删除功能(完成篇)
- 九、给小白看的第二篇Python基础教程
- python与 积分
- AAAI 2021 | 基于动态混合关系网络的对话式语义解析方法
- 雇水军刷分有效吗?虚假评论的影响研究分析
- 使用PaddleFluid和TensorFlow训练序列标注模型
- 刚刚,阿里开源了一系列重磅技术炸弹!| 程序员必看
- json schema多种形式_什么是JSON Schema?及其应用方式......