7字符rce题目搭建
搭建这个题目本意就是想学习一下dockerfile和docker-compose.yml文件的使用,原理讲的不透彻,主要记录一下操作
首先在本地把解题的源码写完,再上传到服务器
files下放的是flag.php和index.php
1 | //index.php |
if(strlen($_GET[1])<=7)
这里我一开始测试用的小于8,然后这里改了也没再测试,意思都一样,然后网上这里用的小于7,这样的话7字符根本就过不了
言归正传,我们先看一下dockerfile
1 | FROM ctftraining/base_image_nginx_mysql_php_73 |
FROM就是拉取一个基础镜像
LABEL就是打标签,说明作者等ENV LANG C.UTF-8
这一句就是使用utf-8编码,防止中文乱码,当然在这个题没有中文
COPY这里就是把服务器的解题所需文件放到docker容器里面
EXPOSE是映射到宿主机的端口,就是暴露容器80端口
然后看一下docker-compose.yml
1 | version: "2" |
version指明yml文件的版本号
services就是yml文件的主体,定义了服务了配置。bulid就是基于dockerfile启动一个容器,后面就是dockerfile路径,这里代表dockerfile和yaml文件在同一路径,environment这个就是弄动态flag,这里我以后往平台上题再学一下操作,ports这里2333表示映射的端口,80这里和dockerfile要一样
这样一个题目搭建就基本完成了,然后再去服务器运行docker-compose.yml文件就可以快速搭建题目了
可以看到直接执行sudo docker-compose up -d
就可以快速起一个环境,而且这里创建了一个rce-web-1镜像,并且这里看到容器创建成功
访问一下,看到题目
打一下
payload:
1 | >hp |
这里可以使用脚本自动执行,但是网上脚本我执行发现一句话写不进去,可能哪里有点问题
直接手动吧
成功写入
拿到flag,这里也就是flag.php的代码
不知道为什么蚁剑连不上,可能是我环境有问题,以后搭建文件上传的题目再细细研究一下