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            //保证容器不退出
最后修改:2023 年 08 月 22 日
如果觉得我的文章对你有用,请随意赞赏