CTFd平台使用docker配置pwn题目

这篇具有很好参考价值的文章主要介绍了CTFd平台使用docker配置pwn题目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.安装docker和ctf_xinetd

        1.docker:

        2.ctf_xinetd的下载与使用

        3.Docker Hub 镜像加速器

        检查加速器是否生效

        Docker Hub 镜像测速

2.制作镜像并上传

1.先配置好flag文件不要忘了,保证和CTFd平台的一样。

本人的目的:

2.Dockerfile:

这里是改变了lbc版本为2.35

3.ctf.xinetd

配置这里需要注意elf文件名。

4.docker-compose.yml

注意imge在该配置文件中和后文命令保持一致

5.docker build创建strongchunk镜像

注意image在配置文件和docker build xxx命令中保持一致。

 6.(测试本地docker,可以跳过)

3.上传镜像

1).首先登陆你的dockerhub

在本地也要登陆

2).使用docker hub 规范修改镜像的标签

3).在登录dockerhub的命令行上传镜像

其他

删除已有的docker images:

将运行起来的docker停下来

        针对docker run

文章:

吐槽:

使用过的链接记录如下,并对他们表示无声的感谢:


文章背景:记录一次学校docker出题,因为要出题,所以需要docker。

主要靠以下两个文章完成。

Pwn出题教程 - 腾讯云开发者社区-腾讯云 (tencent.com)

Docker教程-9-构建镜像并上传到DockerHub仓库_孔子-说的博客-CSDN博客_docker镜像上传到仓库

说明:本机为Ubuntu20,libc版本2.31-0ubuntu9.9

准备你的dockerhub账户。

1.安装docker和ctf_xinetd

以下都在sudo权限下完成:

sudo su

后运行以下linux命令

        1.docker:

用官方的脚本直接就可以安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

这个命令可以安装好一切,至于网上说用apt-get install docker docker-compose来安装docker-compose,千万别这样,据引用文章说,会把你的Ubuntu干碎,然后建议使用Ubuntu要会拍快照

检测是否安装成功可以使用docker images

CTFd平台使用docker配置pwn题目

 出现前两行东西,就安装成功了。

        2.ctf_xinetd的下载与使用

git clone https://github.com/Eadom/ctf_xinetd.git

注意这里面的三个文件

ctf.xinetd 、Dockerfile、/bin/flag、和后面即将出现的docker-compose.yml文件

将编译好的ELF文件(如果有libc也一起放进去),放入此文件夹的bin目录中,并且把flag改成想要的内容,然后在ctf_xinetd的同级目录下创建docker-compose.yml文件:

其中的内容为:

version: '3'

services:
    pwn:
        build: ./
        image: pwn
        ports:
            - "60001:9999"
        pids_limit: 1024
        # cpus: 0.5
        restart: unless-stopped
        # privileged: true

这里面的image名字要与后面创建的docker image的名字对应。

        3.Docker Hub 镜像加速器

由于笔者觉得上传镜像的时候太慢了,于是找到了这篇文章,想要上传镜像的时候快一些。

Docker Hub 镜像加速器 - 腾讯云开发者社区-腾讯云 (tencent.com)

创建或修改 /etc/docker/daemon.json

运行如下命令即可,备注:总共四个命令,中间那一大串都是一个,要一起复制。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

        检查加速器是否生效

命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

Registry Mirrors:
 [...]
 https://registry.docker-cn.com/

        Docker Hub 镜像测速

使用镜像前后,可使用 time 统计所花费的总时间。测速前先移除本地的镜像!

Registry Mirrors:
 [...]
 https://registry.docker-cn.com/

2.制作镜像并上传

在ctf_xinetd的目录下运行命令:

docker build -t "pwn" .

来创建一个镜像,也就是image,这里的名字要和docker-compose中写的名字一样,也就是说你docker-compose文件里的image名字写的是什么,这里build的image名就要叫啥。

配置文件 ctf.xinetd 、Dockerfile、/bin/flag 、docker-compose.yml文件

1.先配置好flag文件不要忘了,保证和CTFd平台的一样。

CTFd平台使用docker配置pwn题目

CTFd平台使用docker配置pwn题目

以下为本人的实际记录:

本人的目的:

将名字为apple的elf文件,制作在image名字为strong的镜像里,libc版本为2.35。

2.Dockerfile:

在原dockerfile出做了一些修改,修改后记录如下:

这里是改变了lbc版本为2.35

FROM ubuntu:22.04 

RUN sed -i "s/http:\/\/archive.ubuntu.com/http:\/\/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list && \
    apt-get update && apt-get -y dist-upgrade && \
    apt-get install -y lib32z1 xinetd

RUN useradd -m ctf

WORKDIR /home/ctf

RUN cp -R /usr/lib* /home/ctf

RUN mkdir /home/ctf/dev && \
    mknod /home/ctf/dev/null c 1 3 && \
    mknod /home/ctf/dev/zero c 1 5 && \
    mknod /home/ctf/dev/random c 1 8 && \
    mknod /home/ctf/dev/urandom c 1 9 && \
    chmod 666 /home/ctf/dev/*

RUN mkdir /home/ctf/bin && \
    cp /usr/bin/ldd /home/ctf/bin && \
    cp /bin/sh /home/ctf/bin && \
    cp /bin/ls /home/ctf/bin && \
    cp /bin/cat /home/ctf/bin

COPY ./ctf.xinetd /etc/xinetd.d/ctf
COPY ./start.sh /start.sh
RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail

RUN chmod +x /start.sh

COPY ./bin/ /home/ctf/
RUN chown -R root:ctf /home/ctf && \
    chmod -R 750 /home/ctf && \
    chmod 740 /home/ctf/flag

CMD ["/start.sh"]

EXPOSE 9999

两处:1️⃣FROM ubuntu:20.04  是因为要出 2.35版本的堆题目,故做此改变

           2️⃣使用一下原图,由于使用的ubuntu版本高于了18.04,将图纸框起来的部分删除即可:

CTFd平台使用docker配置pwn题目

3.ctf.xinetd

配置这里需要注意elf文件名。

因为我的elf文件名为apple,所以那里填写为apple

service ctf
{
    disable = no
    socket_type = stream
    protocol    = tcp
    wait        = no
    user        = root
    type        = UNLISTED
    port        = 9999
    bind        = 0.0.0.0
    server      = /usr/sbin/chroot
    # replace helloworld to your program
    server_args = --userspec=1000:1000 /home/ctf ./apple
    banner_fail = /etc/banner_fail
    # safety options
    per_source	= 10 # the maximum instances of this service per source IP address
    rlimit_cpu	= 20 # the maximum number of CPU seconds that the service may use
    #rlimit_as  = 1024M # the Address Space resource limit for the service
    #access_times = 2:00-9:00 12:00-24:00
}

4.docker-compose.yml

注意imge在该配置文件中和后文命令保持一致

version: '3'

services:
    pwn:
        build: ./
        image: "strongchunk" #这里修改的是images名,将和 docker build -t "pwn" . 该命令有关

        ports:
            - "60001:9999"
        pids_limit: 1024
        # cpus: 0.5
        restart: unless-stopped
        # privileged: true

5.docker build创建strongchunk镜像

注意image在配置文件和docker build xxx命令中保持一致。

docker build -t "strongchunk" .

CTFd平台使用docker配置pwn题目

创建成功:

CTFd平台使用docker配置pwn题目

 6.(测试本地docker,可以跳过)

在此目录下运行命令:

docker run -d -p "127.0.0.1:8888:9999" -h "strongchunk" --name="strongchunk" strongchunk

这里的-p后面的内容就是把9999端口映射到8888端口,这里的端口号可以改。

–name后面的内容是指定容器的名称,而-h是指定容器的hostname,而最后的那个strongchunk,则是image的名字,所以这里要根据你前面创建的镜像名进行更改。

注意,这里其实是手动映射了端口,其实直接使用docker-compose文件来映射端口也是可以的。

CTFd平台使用docker配置pwn题目

 通过exp测试可以打通,如下:

CTFd平台使用docker配置pwn题目
CTFd平台使用docker配置pwn题目

3.上传镜像

1).首先登陆你的dockerhub

创建同样的镜像仓库,名字要和后面的保证一样

CTFd平台使用docker配置pwn题目

在本地也要登陆

docker login -u 账号 -p 密码

CTFd平台使用docker配置pwn题目

2).使用docker hub 规范修改镜像的标签

CTFd平台使用docker配置pwn题目

3).在登录dockerhub的命令行上传镜像

docker push onetree0/strongchunk:ssr

CTFd平台使用docker配置pwn题目

上传成功后会在dockerhub页面出现:

吐槽:使用了加速也没有达到我心中的快。
 

其他

删除已有的docker images:

Docker 删除&清理容器和镜像相关命令 - 腾讯云开发者社区-腾讯云 (tencent.com)

在删除docker容器的时候需要先停止docker,先删docker容器然后再删除镜像
然后docker rm docker容器的名字(docker rm x'x')

docker rmi docker容器的名字:tag(图片中的IMAGE ID)

CTFd平台使用docker配置pwn题目

将运行起来的docker停下来

停止正在运行的docker容器及docker容器删除_我超有耐心的的博客-CSDN博客_docker停止运行中的容器文章来源地址https://www.toymoban.com/news/detail-408849.html

        针对docker run

执行以下命令

docker ps -a

docker kill 容器的ID

CTFd平台使用docker配置pwn题目

 nc连接,直接断开。

文章:

吐槽:

写的时候不要惯性ctrl+d,一下子撤回好多字,吓人一跳。

还好,不知道csdn是不是实时保存的,我关闭重新打开草稿,还是我最新写的样子。

建议就是随时保存草稿,不小心撤回过多也不慌。

使用过的链接记录如下,并对他们表示无声的感谢:

Pwn出题教程 - 腾讯云开发者社区-腾讯云

Docker教程-9-构建镜像并上传到DockerHub仓库_孔子-说的博客-CSDN博客_docker镜像上传到仓库

Docker Hub 镜像加速器 - 腾讯云开发者社区-腾讯云

Docker 删除&清理容器和镜像相关命令 - 腾讯云开发者社区-腾讯云

停止正在运行的docker容器及docker容器删除_我超有耐心的的博客-CSDN博客_docker停止运行中的容器

到了这里,关于CTFd平台使用docker配置pwn题目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker 安装的mysql修改配置文件 一、先看一下容器绑定的配置文件目录在哪

    如图,mysql容器的配置文件映射在服务器  /opt/mysql_docker/conf目录下。所以想修改容器的配置文件内容,只需要修改 /opt/mysql_docker/conf中的配置文件。  二、发现 /opt/mysql_docker/conf 目录下没有文件。 三、进入mysql容器,复制mysql的配置文件内容 复制内容如下: 四、在服务器/op

    2024年02月11日
    浏览(47)
  • 如何在 Docker 中安装、配置和使用 Minio,并挂载目录

    Docker https://www.docker.com 是一种开源平台,用于开发、交付和运行应用程序。它利用容器技术,允许开发者将应用程序及其所有依赖项打包成一个标准化的容器,确保应用在不同环境中的一致性和可移植性。 Minio https://min.io 是一个开源的对象存储服务器,它兼容 Amazon S3 API,可

    2024年04月13日
    浏览(41)
  • 虚拟机内搭建CTFd平台搭建及CTF题库部署,局域网内机器可以访问

    ubuntu: sudo apt-get update #更新系统 sudo apt-get -y install docker.io #安装docker sudo apt-get -y install git #安装git sudo apt-get -y install python3-pip #安装pip3 sudo pip install docker-compose #pip安装docker-compose,如安装失败sudo pip install --upgrade pip更新pip版本后再安装 docker配置: #如果想自定义docker镜像下载

    2024年02月13日
    浏览(47)
  • 前端异常监控平台Sentry安装配置使用及问题

    前言:Sentry是一款开源的异常监控平台,支持各种语言的SDK,通过对应SDK可以收集错误信息和性能数据,并可以再后台web页面中查看相关信息。 官方地址: 安装说明:https://develop.sentry.dev/self-hosted/ 后台使用说明:https://docs.sentry.io/product/releases/ SDK使用说明(根据需要选择平台

    2024年02月04日
    浏览(39)
  • Docker的安装配置与使用

    首先你要保证虚拟机所在的盘要有至少20G的空间,因为docker开容器很吃空间的,其次是已经安装了yum依赖 配置文件 /etc/sysconfig/docker 基本信息查看 搜索镜像 下载镜像 查看镜像 使用镜像创建容器 查看容器 再次启动容器 停止容器 进入正在运行的docker容器 删除容器 启动容器,

    2024年02月04日
    浏览(30)
  • Docker 安装 ElasticSearch 及 挂载目录

    说明 1 privileged=true 允许访问挂载目录 2 \\\"discovery.type=single-node\\\" 单机版 3 ES_JAVA_OPTS=\\\"-Xms256m -Xmx256m\\\"  设置内存,如果服务器内存不是很大,这里设置小点,否则服务将起不来 打开es配置文件 elasticsearch.yml,添加如下,这样head插件就可以访问 es服务器了 如果你本地已经安装了k

    2024年02月04日
    浏览(39)
  • docker 安装rabbitmq并配置hyperf使用

    这里我想完成的是 制作消息(多个协程制造)——》推送到rabbitmq——》订阅消息队列——》消费消息(ws协程客户端【一次消费多条】/ws前端) 利用 WebSocket 协议让客户端和服务器端保持有状态的长链接,保存链接上来的客户端 id。订阅发布者发布的消息针对已保存的客户

    2024年03月12日
    浏览(48)
  • 深度学习docker环境配置之nvidia-docker安装使用

    –docker容器技术–。 简单理解 :Anaconda用于隔离不同的python环境;docker可以理解成在你的机器里面安装了一个独立的系统,因此它可以隔离不同的CUDA环境,还有着独立的文件系统,防止别人删掉你的实验和环境等。 镜像(images)的意思就是静态的镜像文件; 容器(containe

    2024年02月06日
    浏览(45)
  • 【Docker】Docker挂载和修改容器中的目录及配置文件的若干种方式

    我们知道,Docker相当于提供了一个 独立于宿主机的运行环境。当我们使用Docker部署了中间件例如nginx的容器后,一般都是需要修改配置文件的。那么我们想到的第一个方法就是进入容器去修改[1]。 1.进入容器内修改 首先我们需要有一个已经启动的容器。pull image后通过run-d -

    2024年02月08日
    浏览(41)
  • 在centOS服务器安装docker,并使用docker配置nacos

    遇到安装慢的情况可以优先选择阿里镜像 先查看所有可选择的版本 我们一般选择STARS比较多的进行安装,说明大家对它比较认可 选择好要安装哪一个后,通过docker pull进行安装 对nacos进行相关配置 在浏览器输入,服务器ip:8848/nacos进行访问 记得开放服务器的对应端口

    2024年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包