动态容器原理¶
当然这并不很必要太详细的了解,不过为了防止您在使用过程中出现一些问题,我们还是简单的介绍一下动态容器的原理。
CTF比赛中 几乎所有容器的动态Flag 均基于环境变量(environment)实现,在启动中利用类似 -e FLAG=flag{xxx}
的方式来设置环境变量。
有意思
在很多容器的本地运行需要注入flag的时候 您可能会看到以下类似的命令
docker run -dtP -e FLAG=NSSCTF{123456} [imagesName:Tag]
将flag注入到环境变量中后,通过bash脚本(在项目的靶机模板中我们使用 docker-entrypoint.sh) 直接引用环境变量,将其写入到需要放置flag的文件或者数据库中,当然诸如flask的框架也可以直接在代码中引用环境变量(getenv)。
注意
编写题目时 您可能会进行类似于 FLAG写入环境变量 使用Bash脚本 使用db.sql文件进行数据库初始化... 请注意在完成对应操作后 非必要情况下请抹除环境变量以及删除对应的脚本文件,防止flag泄露。