使用docker还原镜像基于题目基础镜像的方式——反序列化题
很多同学都想在比赛结束的时候把题目还原给别人做,或者把题目还原研究更多的解题方式。在杂项和密码学等可以直接使用题目即可,但是在pwd和web题的时候就没办法了。很多同学在web题就使用本地环境,但是没办法达到复用的效果。接下来我就演示一下如何使用ctfhub-team中的基础镜像来还原题目。
我这边使用了一个Ubuntu22的系统,里面安装了docker和docker-compose还有git。
最好使用docker 的镜像加速,要不然在拉取镜像的时候会很慢,具体可以去自行百度设置。
这里使用的题目是ctf.show
ctf.show里面的web入门和pwd入门题目都是由入门到技术的,有条件的话还是比较推荐的。
接下来开始还原镜像:
1、拉取基础镜像相关文件到本地
这里我使用的是GitHub - ctfhub-team/base_web_nginx_php_56: 基础镜像 WEB Nginx PHP 5.6 你可以根据你的需要去选择合适的基础镜像。
git clone https://github.com/ctfhub-team/base_web_nginx_php_56.git
拉取镜像到本地
这个镜像的文件结构如下:
Dockerfile文件是关键的启动文件,里面可以配置镜像启动时的命令等等。
2、题目复现
创建题目文件
mkdir src
创建首页 index.php (记得切换到src目录里面再创建)
touch index.php
编辑并将题目源码放到index.php里面
创建相应的flag文件,并编辑相应的flag进去
3、修改相应的启动配置
返回我们拉取的镜像更目录,编辑Dockerfile文件,将里面的
&& echo '<?php phpinfo();' > /var/www/html/index.php \ 删除
在 COPY _files /tmp/添加一行
COPY src /var/www/html
这里的的修改的解释是:
把原来的例子删除掉,添加一个把创建的题目网站源码复制到nginx运行目录。
最后得到这样的目录文件
4、修改相应的题目备注
可以进行如下操作
删除README.md文件
修改meta.yml文件
最后得到
5、运行
docker本地镜像启动命令如下:
docker-compose build
docker-compose up -d
使用docker ps命令查看相应的题目端口信息
即可在浏览器访问:
127.0.0.1:8085
6、验证题目
在题目做好后,最好在本地自己做一遍,查看题目的完整性,然后再上传到docker镜像仓库里面。
7、总结
这样就完成了一个题目的创建。总的来说没有数据库的题目创建起来是比较简单的,这适用于题目中没有数据库的,如果有数据库得配置相应的数据库信息来达到题目于docker里面的数据库连接。
由于我们使用了基础镜像,题目创建起来还是比较简单快速的。
遇到的问题:
在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
重启
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=12fkow91cc1bl