1、PHP靶机
部署php靶机是相对比较容易的,可以参考下面的方法
1.1、方法一
目录结构
.
├── Dockerfile #生成镜像的脚本
├── html
│ ├── flag.php # flag位置
│ └── index.php #代码审计主页
└── start.sh #生成动态flag
Dockerfile
FROM php:7.4-apache
COPY start.sh /start.sh
RUN chmod +x /start.sh
COPY html/flag.php /var/www/html/flag.php
COPY html/index.php /var/www/html/index.php
EXPOSE 80
CMD ["/start.sh"]
start.sh
#!/bin/sh
//将flag.php替换为动态flag
sed -i "s#FLAGFLAGFLAG#$FLAG#" /var/www/html/flag.php || true
export FLAG=not_flag
FLAG=not_flag
service apache2 start
tail -f /dev/null
flag.php
$FLAG的值不要修改否则start.sh也要修改
<?php
$FLAG = "FLAGFLAGFLAG";
?>
index.php
<?php
//flag in flag.php
highlight_file(__FILE__);
include "flag.php";
echo $FLAG;
构建镜像
docker build -t 你的昵称/容器昵称 .
登录dockerhub
docker login -u 用户名 -p 密码
将镜像push到dockerhub中
docker push 你的昵称/容器昵称
1.2 方法二
目录结构
.
├── Dockerfile
├── index.php
├── flag.txt
└── start.sh
Dockerfile
FROM php:7.4-apache
COPY start.sh /start.sh
RUN chmod +x /start.sh
COPY flag.txt /var/www/html/flag.txt
COPY index.php /var/www/html/index.php
EXPOSE 80
CMD ["/start.sh"]
如果有其他文件需要将文件拷贝到/var/www/html/目录下
COPY xxx.xxx /var/www/html/xxx.xxx
flag.txt
这里随便写到时候导入平台后会替换成动态FLAG
flag{xxxx}
start.sh
#!/bin/bash
echo $FLAG > /var/www/html/flag.txt //将动态flag输出到flag.txt文件中
chown www-data:www-data /var/www/html/flag.txt //权限分配
chmod 640 /var/www/html/kfc.txt //权限分配
export FLAG=not_flag
FLAG=not_flag
chmod 755 index.php
rm /var/log/apache2/access.log
rm /var/log/apache2/error.log
service apache2 start //启动apache
tail -f /dev/null //保证容器不退出