手把手教你如何建立一个支持ctf动态独立靶机的靶场

前言

要说开源的ctf训练平台,ctfd是不错的选择,支持各种插件,今天我就来介绍一下如何部署赵今师傅为ctfd平台写的一款支持独立动态靶机的插件。前提是你的ctfd也是docker部署的。

动态独立靶机

说到独立动态靶机,各位ctfer可能会联想到i春秋举办的各类比赛,其中比赛环境大都用到了动态独立靶机(dynamic standalone instance)技术,也就是每做一道题,就会自动生成一个虚拟题目环境,每一个环境刚刚生成的时候都是崭新的,且能为每个队伍生成一个独一无二的flag,防止flag分享作弊的行为。

技术原理

先来看张图 = =

官方教程

建议先去看看官方教程:)本教程对应官方教程第一种模式。 www.zhaoj.in/read-6333.h…

安装步骤

1.安装启动frps

下载frp并安装

cd
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar -zxvf frp_0.29.0_linux_amd64.tar.gz
cd frp_0.29.0_linux_amd64
sudo cp systemd/* /etc/systemd/system/
sudo mkdir /etc/frp
sudo cp frpc.inifrps.ini /etc/frp/
sudo cp frpcfrps /usr/bin/
sudo chmod a+x /usr/bin/frpc /usr/bin/frps
sudo systemctl enable frps 

编辑frps.ini

sudo vim /etc/frp/frps.ini 
frps.ini
[common]
bind_port = 7897
bind_addr = 0.0.0.0
token =thisistoken 

至于frpc.ini,先不急着配置,后面会配置

启动frps系统服务

sudo systemctl start frps 

2.创建网络并启动frpc容器并配置frpc.ini

启动frpc容器

sudo docker network create ctfd_frp-containers
sudo docker run-d -v ~/frp_0.29.0_linux_amd64/frpc.ini:/etc/frp/frpc.ini --network="ctfd_frp-containers" --restart=always "glzjin/frp" 

创建网络frpcadmin用于ctfd容器和frpc容器通信

sudo docker network create frpcadmin 
sudo docker network connect frpcadmin <frpc容器名或者ID> 
#将frpc和ctfd容器单独连接到网络frpcadmin,注意要等容器创建好之后再连接,因此ctfd将在稍后连接 

查看frpcadmin网络的连接情况并记录frpc容器的网络IP

docker network inspect frpcadmin 
vim ~/frp_0.29.0_linux_amd64/frpc.ini 
frpc.ini
[common]
server_addr = 172.17.0.1 # 这里填写宿主机ifconfig之后docker0的ip,因人而异,不要一摸一样填
server_port = 7897
token=thisistoken
admin_addr = 172.22.0.2 #这里填写frpc容器在frpcadmin网络里的ip,因人而异,不要一摸一样填,而且要和后续下图插件配置界面中️的一样。
admin_port = 7400
log_file = ./frps.log 
docker restsrt <frpc容器的ID> 

3.安装靶场与插件

下载靶场与插件

git clone https://github.com/CTFd/CTFd.git
cd CTFd/
git reset 6c5c63d667a17aec159c8e26ea53dccfbc4d0fa3 --hard
#回滚到当前教程适合的版本
cd CTFd/plugins #打开ctfd插件目录
git clone https://github.com/glzjin/CTFd-Whale.git ctfd-whale #确保插件文件夹小写
cd ctfd-whale
git reset 5b32f457e9f56ee9b2b29495f4b3b118be3c57bd --hard #回滚到当前教程适合的版本
cd ../.. #返回ctfd主目录
vim docker-compose.yml 

配置docker-compose.yml

version: '2.2'

services:ctfd:build: .user: rootrestart: alwaysports:- "8000:8000" #你自己的environment:- UPLOAD_FOLDER=/var/uploads- DATABASE_URL=mysql+pymysql://root:ctfd@db/ctfd- REDIS_URL=redis://cache:6379- WORKERS=1- LOG_FOLDER=/var/log/CTFd- ACCESS_LOG=-- ERROR_LOG=-volumes:- .data/CTFd/logs:/var/log/CTFd- .data/CTFd/uploads:/var/uploads- .:/opt/CTFd:ro- /var/run/docker.sock:/var/run/docker.sock #添加这句即可,别的基本按照官方的不用动depends_on:- dbnetworks:default:internal:db:image: mariadb:10.4.12 #这里改成10.4.12,10.4.13会出错restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=ctfd- MYSQL_USER=ctfd- MYSQL_PASSWORD=ctfd- MYSQL_DATABASE=ctfdvolumes:- .data/mysql:/var/lib/mysqlnetworks:internal:# This command is required to set important mariadb defaultscommand: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --wait_timeout=28800, --log-warnings=0]cache:image: redis:4restart: alwaysvolumes:- .data/redis:/datanetworks:internal:

networks:default:internal:internal: true 

重新build后启动ctfd 如果是在国内网络环境下构建镜像的同学,建议修改Dockerfile为以下来使用豆瓣源or阿里源:

FROM python:2.7-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&\apk update && \apk add python python-dev linux-headers libffi-dev gcc make musl-dev py-pip mysql-client git openssl-dev
RUN adduser -D -u 1001 -s /bin/bash ctfd

WORKDIR /opt/CTFd
RUN mkdir -p /opt/CTFd /var/log/CTFd /var/uploads
RUN pip config set global.index-url https://pypi.doubanio.com/simple
RUN pip config set install.trusted-host pypi.doubanio.com
COPY requirements.txt .

RUN pip install -r requirements.txt -ihttps://pypi.doubanio.com/simple

COPY . /opt/CTFd

RUN for d in CTFd/plugins/*; do \if [ -f "$d/requirements.txt" ]; then \pip install -r $d/requirements.txt -ihttps://pypi.doubanio.com/simple; \fi; \done;

RUN chmod +x /opt/CTFd/docker-entrypoint.sh
RUN chown -R 1001:1001 /opt/CTFd
RUN chown -R 1001:1001 /var/log/CTFd /var/uploads

USER 1001
EXPOSE 8000
ENTRYPOINT ["/opt/CTFd/docker-entrypoint.sh"] 

然后部署下阿里云的docker加速器: help.aliyun.com/document_de…cr.console.aliyun.com/cn-qingdao/… 选择左下角镜像加速器注意由于这篇文章年代久远banal的版本已经不支持python2。如果遇到以下问题:

def is_sequence(obj: Any) -> bool syntax error:

请在reqiurements.txt添加:

 banal==0.4.2 

之后构建启动镜像。

docker-compose build
docker-compose up -d 

将ctfd连接frpcadmin网络

docker network connect frpcadmin <ctfd容器名或者ID> 

启动ctfd后进入管理页面选择插件

<img src=“https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c464f2f20800481eae21416faedb3760~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image) 由于我这篇文章写的比较早,ctfd-whale已经有了很多次更新,根据gtfly师傅的提醒,这里需要填写创建的网络” style=“margin: auto” />

3b.使用docker-compose一站式部署靶场、容器与网络

以下docker-compose.yml的功能与上述操作步骤一样的,作为可选项,有能力的同学可以试试看

version: '2'

services:ctfd:build: .user: rootrestart: alwaysports:- "8000:8000" #你自己的environment:- UPLOAD_FOLDER=/var/uploads- DATABASE_URL=mysql+pymysql://root:ctfd@db/ctfd- REDIS_URL=redis://cache:6379- WORKERS=1- LOG_FOLDER=/var/log/CTFd- ACCESS_LOG=-- ERROR_LOG=-volumes:- .data/CTFd/logs:/var/log/CTFd- .data/CTFd/uploads:/var/uploads- .:/opt/CTFd:ro- /var/run/docker.sock:/var/run/docker.sock #添加这句即可,别的基本按照官方的不用动depends_on:- dbnetworks:default:internal:frpcadmin:ipv4_address: 172.22.0.3db:image: mariadb:10.4.12restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=ctfd- MYSQL_USER=ctfd- MYSQL_PASSWORD=ctfd- MYSQL_DATABASE=ctfdvolumes:- .data/mysql:/var/lib/mysqlnetworks:internal: # This command is required to set important mariadb defaultscommand: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --wait_timeout=28800, --log-warnings=0]cache:image: redis:4restart: alwaysvolumes:- .data/redis:/datanetworks:internal:frpc:image: glzjin/frp:latestrestart: alwaysvolumes:- ~/frp_0.29.0_linux_amd64/frpc.ini:/etc/frp/frpc.ininetworks:frpcadmin:ipv4_address: 172.22.0.2frp-containers:
networks:default:internal:internal: truefrpcadmin:driver: bridgeinternal: trueipam:config:- subnet: 172.22.0.0/16frp-containers:driver: bridgeipam:config:- subnet: 172.21.0.0/16 

4.测试

不出意外的话,现在在challenge界面可以使用动态靶机 管理员也可以在后台管理靶机

5.制作支持动态flag的镜像请看gtfly写的www.gtfly.top/2019/09/27/…或者可以看看赵师傅的贡献指南。 www.zhaoj.in/read-6259.h…推荐一个github靶机仓库github.com/CTFTraining

pwn题

1、创建一个新目录。

mkdir pwntest
cd pwntest 

2、进入该目录,将可执行文件拷贝到该目录下,命名为 pwn。创建一个 Dockerfile 文件,内容如下:

FROM glzjin/pwn_base_18
COPY pwn /pwn/pwn 

glzjin/pwn_base_18 代表 Ubuntu 18.04, glzjin/pwn_base_16 代表 Ubuntu 16.04, glzjin/pwn_base_19 代表 Ubuntu 19.04, glzjin/pwn_base_20 代表 Ubuntu 20.04。注意,pwn的端口默认是10000

3、构建。

docker build -t <你在 dockerhub的用户名/你的镜像名> ./ 
常见错误分析与检查
一般错误:

可以使用命令docker logs <ctfd容器的ID>查看报错情况

docker容器无法启动:

确保docker api填写正确,如示例中为unix:///var/run/docker.sock 你也可以使用端口形式的api如官方示例:可以用IP:端口指定API 然后使用如下命令进入ctfd容器,手动调用端口测试

docker exec -it <ctfd容器的ID> /bin/sh
/opt/CTFd# python 
>>>import docker
>>>client=docker.DockerClient(base_url="unix:///var/run/docker.sock")
>>>client.images.list() 

如果api正确会列出所有镜像

frp端口无法映射:

可以使用如下命令进入ctfd容器,手动调用端口测试

docker exec -it <ctfd容器的ID> /bin/sh
/opt/CTFd# python 
>>>import requests
>>>requests.get("http://172.22.0.2:7400/api/reload")
<Response [200]> #这个表示成功 

如果还是不行,也可以尝试查看ctfd和frpc容器的日志来分析解决。

docker logs <ctfd容器的ID>
docker logs <frpc容器的ID> 

题外话

在搭建ctfd的时候,默认会有一个类似微信登录的方式登录的选项,就是使用MLC来登录。

OAuth Settings not configured. Ask your CTF administrator to configure MajorLeagueCyber integration.

是不是很帅呢?

友情连接

BUUCTFCthulhu OJ

获取帮助

09ac16608228296~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image" style=“margin: auto” />

是不是很帅呢?

友情连接

BUUCTFCthulhu OJ

获取帮助

如果配置有遇到困难可以加入交流群:729021148 或者本人淘宝店:item.taobao.com/item.htm?id…## 题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

2023届全国高校毕业生预计达到1158万人,就业形势严峻;

国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。

网络安全行业特点

1、就业薪资非常高,涨薪快 2022年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

img

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
img

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

img

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值