首页 > 系统相关 >web专题:ctf专业竞赛平台!在 Ubuntu 上部署 CTFd 与 Docker!全网最详细版本,少走弯路!

web专题:ctf专业竞赛平台!在 Ubuntu 上部署 CTFd 与 Docker!全网最详细版本,少走弯路!

时间:2024-11-20 08:45:26浏览次数:3  
标签:node web apt ctf CTFd Docker com docker

docker是什么?

Docker 是一个开源的容器化平台,用于开发、发布和运行应用程序。它通过将应用程序及其依赖项打包成一个容器,使应用在任何支持 Docker 的环境中都能保持一致性。容器本质上是轻量级、独立的运行环境,包含了应用程序和它所需的所有资源,但与虚拟机不同的是,容器共享主机操作系统的内核,从而更高效且占用更少资源。

CTFd是什么?

CTFd 是一个用于创建和管理 CTF(Capture The Flag)竞赛的平台。它是一个开源的、基于 Flask 框架的工具,常用于举办信息安全竞赛。在 CTFd 中,竞赛组织者可以创建各种类型的挑战题目(如逆向工程、漏洞利用、密码学等),而参赛者通过提交正确的 Flag 来得分。CTFd 提供用户注册、积分排行榜和多种题目管理功能,是开展网络安全训练和竞赛的常用平台。

1. 更换国内源

1.1 备份原源文件

cp -p /etc/apt/sources.list /etc/apt/sources_init.list

1.2 编辑源文件

使用 vim 编辑 sources.list 文件,复制以下内容:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

1.3 更新源列表

apt update

apt update 是一个用于更新 Ubuntu 或其他基于 Debian 的 Linux 系统中的包管理器(APT,Advanced Package Tool)软件包信息的命令。

具体作用

当你运行 apt update 时,APT 会从系统中配置的软件源列表中获取最新的软件包信息。这些信息包括每个软件包的最新版本、依赖关系和其他元数据。它不会安装或升级任何软件包,只是更新你本地的软件包数据库。

运行 apt update 的主要目的是:

  1. 获取最新的包信息,使系统知道当前有哪些软件包的更新可用。
  2. 确保你在后续安装、升级软件时可以获取到最新的版本。

 

1.4 更新系统

apt-get upgrade

2. 安装 Docker 和 Docker Compose

2.1 安装 pip

确保系统安装 Python 3 的 pip 包管理器:

apt-get install -y python3-pip

apt-get install apt-transport-https ca-certificates curl software-properties-common 是一个命令,用于在基于 Debian 的 Linux 系统(例如 Ubuntu)上安装多个软件包。这些软件包有助于增强系统的包管理能力和安全性。以下是每个软件包的具体解释:

2.2 添加 HTTPS 支持

apt-get install apt-transport-https ca-certificates curl software-properties-common

2.3 安装必要的工具

apt-get install apt-utils && apt-get install git -y

pt-get install apt-utils && apt-get install git -y 是一个在基于 Debian 的 Linux 系统(例如 Ubuntu)上安装两个软件包的命令。以下是对每个部分的解释:

apt-get install apt-utils:

这个命令安装 apt-utils 包,它包含了一些 APT 的实用工具,用于改进软件包管理器的功能,如更详细的错误信息和配置帮助。在某些最小化的系统安装中,apt-utils 可能没有默认安装,因此这个命令确保其存在。

&&:

这个符号是逻辑运算符,表示“如果前一个命令成功执行,那么执行下一个命令”。也就是说,只有当 apt-get install apt-utils 成功后,系统才会继续执行后面的 apt-get install git -y。

apt-get install git -y:

这个命令安装 git,一个广泛使用的版本控制系统,用于管理和跟踪代码变更。

-y 选项表示自动确认所有提示,这样就不需要手动输入“yes”来确认安装。

2.4 添加 Docker GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

这个命令用于将 Docker 的 GPG 密钥添加到你的 Ubuntu 系统中,以确保系统能够验证并信任从 Docker 官方存储库下载的软件包。以下是该命令的详细解析:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg:

curl:一个用于从网络下载数据的命令行工具。

-f:如果请求失败,curl 会返回错误码,而不会输出错误内容。

-s:静默模式,curl 不输出进度条或错误信息。

-S:与 -s 一起使用时,在发生错误时显示错误信息。

-L:如果请求被重定向,curl 会自动跟随重定向。

https://download.docker.com/linux/ubuntu/gpg:这是 Docker 官方提供的 GPG 密钥文件的 URL。这个密钥用于验证从 Docker 官方存储库下载的软件包的真实性。

| sudo apt-key add -:

| 是管道符号,将前一个命令的输出传递给下一个命令。

sudo:以超级用户权限运行命令,确保有权限添加密钥。

apt-key add -:这个命令将通过管道传入的内容(Docker 的 GPG 密钥)添加到系统的受信任密钥列表中。- 表示从标准输入读取密钥数据。

2.5 添加 Docker 的 apt 源

echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list

2.6 更新 apt 缓存

apt update

2.7 安装 Docker

apt-get install docker.io -y

2.8 设置 Docker 启动并启动服务

systemctl enable docker && systemctl start docker

systemctl enable docker && systemctl start docker 是用于在系统上启用并启动 Docker 服务的命令。

2.9 安装 Docker Compose

apt-get install docker-compose -y

2.10 检查 Docker 和 Docker Compose 版本

docker -v

docker-compose -v

2.11 配置 Docker 镜像加速

编辑 Docker 配置文件:

vim /etc/docker/daemon.json

就是新建文件!

写入以下内容:

{"registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"]}

2.12 重启 Docker 服务

systemctl daemon-reload

systemctl restart docker

3. 部署 CTFd 与 CTFd-Whale

3.1 上传 CTFd 安装包

将 CTFd.zip 上传到 /root 目录

我这里用的以下是 scp 命令的简洁示例:

从本地复制文件到远程服务器:

scp /path/to/local/file username@remote_host:/path/to/remote/directory

从远程服务器复制文件到本地:

scp username@remote_host:/path/to/remote/file /path/to/local/directory

复制整个目录到远程服务器:

scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory

指定 SSH 端口传输文件:

scp -P port_number /path/to/local/file username@remote_host:/path/to/remote/director是scp上传

3.2 安装解压缩工具

apt install unzip

3.3 解压安装包

unzip CTFd.zip && cd CTFd/

3.4 Docker 集群设置

启用 Docker Swarm:

docker swarm init --advertise-addr 自己的ip

别管报错

最后用docker node ls

docker swarm init --advertise-addr <你的IP地址> 是用于初始化 Docker Swarm 集群的命令,并将当前节点设为管理节点。以下是该命令的结构和使用说明:

docker swarm init --advertise-addr <你的IP地址>

参数说明

docker swarm init:初始化一个新的 Docker Swarm 集群。

--advertise-addr <你的IP地址>:指定管理节点用于与其他节点通信的 IP 地址。这通常是主机的一个可访问的 IP 地址(例如局域网 IP),确保其他节点能通过这个 IP 地址加入集群。

添加节点别名(选择一种方法):

方法 1(推荐):

docker node update --label-add "name=linux-1" $(docker node ls -q)

命令 docker node update --label-add "name=linux-1" $(docker node ls -q) 的意思是将标签 "name=linux-1" 添加到 Docker Swarm 集群中的所有节点。以下是该命令的详细分解:

docker node update:用于更新 Swarm 集群中的节点属性。

--label-add "name=linux-1":指定要添加的标签为 "name=linux-1"。标签是键值对,用于对节点进行分类和管理。

$(docker node ls -q):这是一个命令替换,返回所有节点的 ID(使用 -q 选项只显示 ID,不显示其他信息)。这部分命令将所有节点 ID 传递给 docker node update 命令。

方法 2:

docker node ls

docker node update --label-add name=linux-1 <节点 ID>

命令 docker node update --label-add "name=linux-1" $(docker node ls -q) 的意思是将标签 "name=linux-1" 添加到 Docker Swarm 集群中的所有节点。以下是该命令的详细分解:

docker node update:用于更新 Swarm 集群中的节点属性。

--label-add "name=linux-1":指定要添加的标签为 "name=linux-1"。标签是键值对,用于对节点进行分类和管理。

$(docker node ls -q):这是一个命令替换,返回所有节点的 ID(使用 -q 选项只显示 ID,不显示其他信息)。这部分命令将所有节点 ID 传递给 docker node update 命令。

3.5 构建并启动镜像

确保在 /root/CTFd 目录下执行:

docker-compose up -d

docker ps -a

3.6 管理脚本设置

在容器中执行管理脚本:

docker-compose exec ctfd python manage.py set_config whale auto_connect_network

docker-compose exec ctfd python manage.py set_config whale auto_connect_network 是用于在 Docker Compose 环境中执行 CTFd(一个开源的 Capture The Flag 平台)管理脚本来配置特定选项的。

3.7 注意事项

如果不行就重新来一下!

pip如果是要升级就再升级一下就行!

4. CTF 初始化配置

4.2 访问 CTFd

在浏览器中访问:

http://ip

根据提示填写活动名称和描述信息。

4.3 管理员设置

设置管理员用户名、邮箱和密码。

4.4 主题和风格设置

保持默认点击下一步。

4.5 设置 CTF 开始和结束时间

点击完成后进入管理面板。

4.6 配置 CTFd Whale 插件

在管理面板中点击插件,配置参数。

5. 部署 CTF 题目

5.1 克隆 CTFTraining 题库

mkdir CTF && cd CTF

git clone ​​​​​​https://github.com/CTFTraining/CTFTraining.git

5.2 下载具体题目

cd CTFTraining

git clone https://github.com/CTFTraining/0ctf_2016_unserialize.git

cd 0ctf_2016_unserialize

docker-compose up -d

5.3 访问 CTFd

在浏览器中访问:

点击登录,使用管理员账号登录 CTFd。

点击 Admin Panel

标签:node,web,apt,ctf,CTFd,Docker,com,docker
From: https://blog.csdn.net/m0_70065235/article/details/143896209

相关文章

  • SpringBoot实现websocket服务端及客户端
    一、WebSocket通信过程客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的候,会向服务端发送一个httpget报文,告诉服务端需要将通信协议切换到websocket,服务端收到http请求后将通信协议切换到websocket,同时发给客户端一个响应报文,返回的......
  • Newstarctf2024 Week3 Reverse-SecertsOfKawaii
    下载附件,是一个apk文件想着用夜神模拟器打开,但是说什么与版本不兼容,懒得再去配置了直接放到jeb里分析吧,因为不知道这个apk运行起来长啥样,就随便点点找启动类(java学的不太好哈哈)看到了一个onclick,应该是输入flag后,通过onclick调用类似“check”是否相等点击这个lambda$.........
  • Web前端学习笔记三:准备开发环境
    1.安装编辑器和浏览器编辑器选择:VisualStudioCode;下载链接:VisualStudioCode-CodeEditing.Redefined 。浏览器选择:GoogleChrome网络浏览器2.下载插件汉化:chinese打开网页:openinbrowser3.设置默认浏览器控制面板——默认程序——设置默认程序——Web浏览......
  • RCE_sample_ctf_questions(ing)
    [广东强网杯2021团队组]love_Pokemon考点:函数escapeshellarg/escapeshellcmd绕过正则匹配文件查看指令+通配符绕过正则匹配点击查看代码<?phperror_reporting(0);highlight_file(__FILE__);$dir='sandbox/'.md5($_SERVER['REMOTE_ADDR']).'/';if(!file_exis......
  • CTF_Web笔记_RCE
    一、RCE(远程代码执行漏洞)owasp_top_10中,rce又称为os注入漏洞。在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞。二、常见RCE漏洞函数1.系统命令执行函数syste......
  • CTF_Pwn:test_your_nc
     1.开启环境  2.解法一:打开kali,输入命令:ncIP地址端口 3.解法二:在桌面新建一个1.py,输入下列代码,然后保存文件,复制到Windows环境中。打开cmd,执行命令:python1.py文件路径注意:要实现安装python环境,在cmd中执行两个命令:python-mpipinstallpwn、python-mpipinstal......
  • Web3.0安全开发实践|钻石代理合约最佳安全实践
    代理合约是智能合约开发者的重要工具。如今,合约系统里已有多种代理模式和对应的使用规则。我们之前已经概述了可升级的代理合约安全最佳实践。本文我们将介绍了另一种在开发者社区颇受青睐的代理模式,即钻石代理模式。什么是钻石代理模式/合约钻石代理合约,也被称为“钻石”,是......
  • WebSocket的应用:前后端详解与使用
    一、简介WebSocket是一种网络通信协议,它提供了在单个TCP连接上进行全双工通信的功能。在下面这个聊天应用示例中,WebSocket被用于实现实时的聊天功能,包括用户之间的消息发送、接收,用户状态管理以及其他相关的交互操作,为用户带来流畅的聊天体验。二、后端实现(一)模块引入与......
  • 使用Ollama和Open WebUI管理本地开源大模型
    OpenWebUI和Ollama介绍OpenWebUI是一个功能丰富且用户友好的自托管Web用户界面(WebUI),它被设计用于与大型语言模型(LLMs)进行交互,特别是那些由Ollama或与OpenAIAPI兼容的服务所支持的模型。OpenWebUI提供了完全离线运行的能力,这意味着用户可以在没有互联网连接的情况下与......
  • ctf show-web57
    这题相较于55过滤了更多的东西,但是flag在36.php中,并且不需要php,所以我们需要在绕过过滤的同时,构造一个36,这里就要知道linux下的运算$(())是算术扩展,允许你对数值进行加法、减法、乘法、除法等算术运算,并输出结果。$((~$((“”))))表达式解析:$((~$((""))))可以分为几......