请配合赵师傅的插件使用:juejin.cn/post/684490… pwn题文件目录格式如下图
里面命名为src/pwn即可
mkdir /home/ec2-user/CTFd/.data/CTFd/uploads/c0ace5883888b8dbe50b5fb7966a0c1b/
echo "use ctfd;">challenge.sql
for dir in `ls`; do #历遍ls命令显示目录
cd $dir/src;
if test $? == 0; then
echo `pwd`;
echo 'FROM glzjin/pwn_base_16
COPY pwn /pwn/pwn' > dockerfile;
cp pwn /home/ec2-user/CTFd/.data/CTFd/uploads/c0ace5883888b8dbe50b5fb7966a0c1b/$dir #复制文件到目录
docker build -t $dir .;
cd ../..;
echo " INSERT INTO challenges
( name , description , max_attempts , value , category, type, state , requirements)
VALUES ('$dir','',0,200,'pwn','dynamic_docker','visible',NULL);
set @challenge_id=(SELECT 240705);
insert into files (type,location,challenge_id) values ('challenge','c0ace5883888b8dbe50b5fb7966a0c1b/$dir',@challenge_id);
INSERT INTO dynamic_docker_challenge(id,initial,minimum,decay,memory_limit,cpu_limit,dynamic_score,docker_image,redirect_type,redirect_port)
VALUES (@challenge_id,200,1,100,'128m',0.5,1,'$dir','direct',10000);
">> challenge.sql;
fi #直接返回主目录。
done
docker exec -i ctfd_db_1 mysql -uctfd -pctfd ctfd < challenge.sql
单脚本容易出错,拆分版: 部署镜像
for dir in `ls`; do #历遍ls命令显示目录
cd $dir;
if test $? == 0; then
echo `pwd`;
pwn=`ls |ggrep -Ev 'Dockerfile|*.so|flag'`;
echo "FROM glzjin/pwn_base_16
COPY $pwn /pwn/pwn" > Dockerfile;
docker build -t fjh1997/$dir .;
docker push fjh1997/$dir;
cd ..;
fi #直接返回主目录。
done
插入数据库:
for dir in `ls`; do #历遍ls命令显示目录
cd $dir;
if test $? == 0; then
echo `pwd`;
pwn=`ls |grep -Ev 'Dockerfile|*.so|flag|challenge.sql'`;
#cp $pwn /home/wlgc/cuz/CTFd/.data/CTFd/uploads/c0ace5883888b8dbe50b5fb7966a0c1b/$dir
cd ..
echo " INSERT INTO challenges
( name , description , max_attempts , value , category, type, state , requirements)
VALUES ('$dir','',0,200,'pwn_hard','dynamic_docker','visible',NULL);
set @challenge_id=(SELECT 240705);
insert into files (type,location,challenge_id) values ('challenge','c0ace5883888b8dbe50b5fb7966a0c1b/$dir',@challenge_id);
INSERT INTO dynamic_docker_challenge(id,initial,minimum,decay,memory_limit,cpu_limit,dynamic_score,docker_image,redirect_type,redirect_port)
VALUES (@challenge_id,200,1,100,'128m',0.5,1,'fjh1997/$dir','direct',10000);
">> challenge.sql;
fi #直接返回主目录。
done
拉取镜像
for dir in `ls|grep -Ev '*.sh|*.sql'`; do #历遍ls命令显示目录
docker pull "fjh1997/$dir"
done