前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker还原镜像基于题目基础镜像的方式——反序列化题

使用docker还原镜像基于题目基础镜像的方式——反序列化题

作者头像
C3ting
发布2023-12-26 18:45:59
1600
发布2023-12-26 18:45:59
举报
文章被收录于专栏:C3tingC3ting

使用docker还原镜像基于题目基础镜像的方式——反序列化题

很多同学都想在比赛结束的时候把题目还原给别人做,或者把题目还原研究更多的解题方式。在杂项和密码学等可以直接使用题目即可,但是在pwd和web题的时候就没办法了。很多同学在web题就使用本地环境,但是没办法达到复用的效果。接下来我就演示一下如何使用ctfhub-team中的基础镜像来还原题目。

我这边使用了一个Ubuntu22的系统,里面安装了docker和docker-compose还有git。

image-20230903173805109
image-20230903173805109

最好使用docker 的镜像加速,要不然在拉取镜像的时候会很慢,具体可以去自行百度设置。

这里使用的题目是ctf.show

ctf.show里面的web入门和pwd入门题目都是由入门到技术的,有条件的话还是比较推荐的。

image-20230903174432592
image-20230903174432592

接下来开始还原镜像:

1、拉取基础镜像相关文件到本地

这里我使用的是GitHub - ctfhub-team/base_web_nginx_php_56: 基础镜像 WEB Nginx PHP 5.6 你可以根据你的需要去选择合适的基础镜像。

代码语言:javascript
复制
git clone https://github.com/ctfhub-team/base_web_nginx_php_56.git

拉取镜像到本地

image-20230903175604213
image-20230903175604213
image-20230903175646006
image-20230903175646006

这个镜像的文件结构如下:

image-20230903175725946
image-20230903175725946

Dockerfile文件是关键的启动文件,里面可以配置镜像启动时的命令等等。

image-20230903181825545
image-20230903181825545
2、题目复现

创建题目文件

代码语言:javascript
复制
mkdir src

创建首页 index.php (记得切换到src目录里面再创建)

代码语言:javascript
复制
touch index.php

编辑并将题目源码放到index.php里面

创建相应的flag文件,并编辑相应的flag进去

image-20230903182506772
image-20230903182506772
3、修改相应的启动配置

返回我们拉取的镜像更目录,编辑Dockerfile文件,将里面的

&& echo '<?php phpinfo();' > /var/www/html/index.php \ 删除

在 COPY _files /tmp/添加一行

COPY src /var/www/html

image-20230903182904743
image-20230903182904743

这里的的修改的解释是:

把原来的例子删除掉,添加一个把创建的题目网站源码复制到nginx运行目录。

image-20230903185144876
image-20230903185144876

最后得到这样的目录文件

4、修改相应的题目备注

可以进行如下操作

删除README.md文件

修改meta.yml文件

image-20230903185450310
image-20230903185450310

最后得到

image-20230903185521969
image-20230903185521969
5、运行

docker本地镜像启动命令如下:

代码语言:javascript
复制
docker-compose build
docker-compose up -d
image-20230903185719017
image-20230903185719017

使用docker ps命令查看相应的题目端口信息

image-20230903185822983
image-20230903185822983

即可在浏览器访问:

127.0.0.1:8085

image-20230903185912457
image-20230903185912457
6、验证题目

在题目做好后,最好在本地自己做一遍,查看题目的完整性,然后再上传到docker镜像仓库里面。

image-20230903190030949
image-20230903190030949
7、总结

这样就完成了一个题目的创建。总的来说没有数据库的题目创建起来是比较简单的,这适用于题目中没有数据库的,如果有数据库得配置相应的数据库信息来达到题目于docker里面的数据库连接。

由于我们使用了基础镜像,题目创建起来还是比较简单快速的。

遇到的问题:

image-20230903190325662
image-20230903190325662

在docker-compose build的时候可能会遇到这个错误: fetch http://mirrors.ustc.edu.cn/alpine/v3.8/main/x86_64/APKINDEX.tar.gz WARNING: Ignoring http://mirrors.ustc.edu.cn/alpine/v3.8/main/x86_64/APKINDEX.tar.gz: temporary error (try again later) fetch http://mirrors.ustc.edu.cn/alpine/v3.8/community/x86_64/APKINDEX.tar.gz WARNING: Ignoring http://mirrors.ustc.edu.cn/alpine/v3.8/community/x86_64/APKINDEX.tar.gz: temporary error (try again later) ERROR: unsatisfiable constraints: mysql (missing): required by: world[mysql] mysql-client (missing): required by: world[mysql-client] nginx (missing): required by: world[nginx] 我的是Ubuntu,具体处理的方案如下: 修改/etc/resolv.conf文件,增加dns:8.8.8.8、114.114.114.114 nameserver 8.8.8.8 nameserver 114.114.114.114 重启

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用docker还原镜像基于题目基础镜像的方式——反序列化题
    • 1、拉取基础镜像相关文件到本地
      • 2、题目复现
        • 3、修改相应的启动配置
          • 4、修改相应的题目备注
            • 5、运行
              • 6、验证题目
                • 7、总结
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com