dockerfile配置动态flag

一,思路

思路参考

1环境

tutum/lamp docker

2思路

总结:创建开机自启脚本
(1)编写自动生成flag脚本:采用覆盖flag.php的思路(删除旧的flag.php,再新建)
随机flag采用四十位。
(2)容器开启自动执行au.sh:采用dockerfile RUN 该脚本。
(3)该思路产生的原因
在这个bash下,我们可以进行各种Ubuntu系统上的操作,当然因为Docker本身的限制,有些涉及到磁盘、网络、设备等Linux特权命令是无法执行的,可以试试reboot命令,会提示你shutdown: Unable to shutdown system。
参考原因

即无法通过shutdown或者reboot重启容器——所谓的/etc/init.d的网上常见linux开机自启的方法均无效。

二,具体过程与“坑”

1文件以及源码

(1)au.sh

#!bin/bash
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
LENGTH="40"
while [ "${n:=1}" -le "$LENGTH" ]
do
       PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
       let n+=1
done
       
cd /var/www/html
rm -rf flag.php
a='<?php $flag="flag{'
b='}";'
flag="$PASS"
echo "$PASS"
echo $a$flag$b > flag.php

exit 0

(2)dockerflie

FROM ceshi

RUN chmod -R 777 /etc/init.d/au.sh \
  && bash /etc/init.d/au.sh

2“坑”与“所以”

第一个坑:#!bin/bash

在某些平台SDK编译中Linux脚本需要改为bin/bash,由于Ubuntu系统模式的脚本是sh,安装SDK之后,编译过程一定会出现错误,所以必须要先更改默认的bash才行 。
参考链接
ubuntu环境中报如下错误:
在这里插入图片描述
所以在使用的时候,需要将 #!bash/bin 改为 #!bin/bash 。

第二个坑:RUN

/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill。
https://blog.csdn.net/shi_hong_fei_hei/article/details/114646659
参考链接

所以在依照本思路设置动态flag的时候就没有必要使用CMD(dockerfile命令)了。

第三个坑:路径坑

#!/bin/bash - no such file or directory
该坑主要来源于“文档格式”。
参考链接

所以,在Notepad++中是在编辑中的文档格式转换就可以了。
在这里插入图片描述

3过程

参考链接

1创建题目镜像

首先,把tutum/lamp拉取下来(docker search lamp 就能看到,然后pull就行)
其次,配置题目环境,略(该内容无论如何都不会影响接下来的步骤,所以你可以放心的构建ctf环境)
最后,将au.sh放入指定位置我是放在了/etc/init.d/下“因爱生恨”(任意地址均可以但在dockerfile中要把路径修改了),au.sh内容见上。

2创建含有shell自启的镜像

在任意位置创建dockerfile,内容见上。
接下来的所有操作均在该目录进行,我习惯在/root下进行。

通过Dockerfile下构建镜像cehsi:1(说明,执行该命令后获得的镜像就是最终结果;不要忘记".")
docker build -t cehsi:1 .

构建并启动容器(说明,执行该命令后获得的容器只是为了验证shell是否生效)
docker run -it -d --name ceshi1 -p 85:80 -p 225:22 ceshi:1

备注

镜像和容器的名字相信大家都会修改

三,接口

至于接口的思路这里建议使用php的include,使用绝对路径调用——"/var/www/html/flag.php"。然后,再将变量$flag write到新的文件里即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这周末在做梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值