首页
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
5,081 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
4,485 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
3,252 阅读
4
几个常见的密码字典推荐
2,630 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
2,566 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
登录
Search
标签搜索
Windows渗透
域渗透
HackMyVm
CyberStrikeLab靶场
内网渗透
渗透测试
网络安全
Web安全
cyberstrikelab
OSCP
SQL注入
WAF绕过
信息收集
渗透工具
靶场
靶场推荐
MSF
ThinkPHP漏洞
Vulfocus
vulnhub
泷羽Sec
累计撰写
185
篇文章
累计收到
3
条评论
首页
导航
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
搜索到
1
篇与
的结果
2025-05-18
GZCTF动态flag部署教程
前言不知道为什么今天,我的dockerHub push的时候连接超时,只能本地演示了,不上传到自己的dockerhub,如果你们有自己的加速源,当然也可以之际push到自己的dockerHub仓库。Web篇章web题,首先是需要按照常规逻辑写一个网页,这里就写一个带flag的简单网页,把flag放在源代码里,并注释掉。创建一个html文件,代码如下<!DOCTYPE html> <html> <head> <title>签到</title> </head> <!--flag{testflag}--> <body> <?php echo "Do u want 2 sign??<br>"; ?> </body> </html>我所使用的平台无需暴露端口,如有需要可以使用EXPOSE 80暴露80端口。接下来实现动态flag,还记得上面提到的flag.sh吗,先来看一下它的代码,同样相关解释写在注释里,正式使用记得删掉注释。#!/bin/sh #必需的东西没什么好讲的 sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php #使用平台的动态flag替换 # index.php中的flag,这里我使用的平台为GZCTF,因此动态flag环境变量为$GZCTF_FLAG,其他平台一般为$FLAG export GZCTF_FLAG="" #这一句暂时不知道什么作用,但是要写着flag.sh文件完整内容#!/bin/sh sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php export GZCTF_FLAG=""接下来编写Dockerfile,各语句解释就写在后面的注释里吧,正式编写请删掉注释。FROM ctftraining/base_image_nginx_mysql_php_56 #web题docker基础镜像,这里使用ctftraing打包好 的,包含了基础的nginx,mysql,php环境,并且会自动运行flag.sh脚本(后面会提到),本题使用php环境。 COPY src /var/www/html # 将你编写的网页源码复制到docker容器中,这里为php网页,因此只需要 复制源码到/var/www/html就可以了,其他类型网页按照实际部署情况COPY到docker中相应目录下就可以了 RUN mv /var/www/html/flag.sh / #把你源码中的flag.sh复制到根目录以便自动执行 && chmod +x /flag.sh #添加运行权限Dockerfile完整内容FROM ctftraining/base_image_nginx_mysql_php_56 COPY src /var/www/html RUN mv /var/www/html/flag.sh / && chmod +x /flag.sh目录结构确保你已经docker login,拥有自己的docker账号使用build命令,构建本地的题目镜像,xiaoyuss为你的docker镜像名,可以参考我以前的文章,webtest为镜像名(自定义),"."为版本号,代表latest,也可以自定义,不过拉取时记得加上版本号docker build -t name/webtest .接下来部署题目,类型记得选择动态容器,不同平台可能有所不同,这里以GZCTF为例。启动赛题flag随机生成成功PWN篇首先下载一个库,pwn题基本逻辑一般为利用栈溢出漏洞,打通后得到shell权限,因此把flag文件放在容器的根目录或其他目录下即可,为了安全,这里在ctf_xinetd基础上做出一些修改来进行pwn题的部署git clone https://github.com/Eadom/ctf_xinetd.git cd ctf_xinetd修改Dockerfile如下内容FROM ubuntu:16.04 RUN sed -i "s/http://archive.ubuntu.com/http://mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list && apt-get update && apt-get -y dist-upgrade && apt-get install -y lib32z1 xinetd RUN useradd -m ctf WORKDIR /home/ctf RUN cp -R /lib* /home/ctf && cp -R /usr/lib* /home/ctf RUN mkdir /home/ctf/dev && mknod /home/ctf/dev/null c 1 3 && mknod /home/ctf/dev/zero c 1 5 && mknod /home/ctf/dev/random c 1 8 && mknod /home/ctf/dev/urandom c 1 9 && chmod 666 /home/ctf/dev/* RUN mkdir /home/ctf/bin && cp /bin/sh /home/ctf/bin && cp /bin/ls /home/ctf/bin && cp /bin/cat /home/ctf/bin COPY ./ctf.xinetd /etc/xinetd.d/ctf COPY ./flag.sh /flag.sh RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail RUN chmod +x /flag.sh COPY ./bin/ /home/ctf/ RUN chown -R root:ctf /home/ctf && chmod -R 750 /home/ctf && chmod 740 /home/ctf/flag CMD ["/flag.sh"] EXPOSE 70修改后的ctf.xinetdservice ctf { disable = no socket_type = stream protocol = tcp wait = no user = root type = UNLISTED port = 70 bind = 0.0.0.0 server = /usr/sbin/chroot # replace helloworld to your program server_args = --userspec=1000:1000 /home/ctf ./pwn #pwn为二进制可执行文件的文件名 banner_fail = /etc/banner_fail # safety options per_source = 10 # the maximum instances of this service per source IP address rlimit_cpu = 20 # the maximum number of CPU seconds that the service may use #rlimit_as = 1024M # the Address Space resource limit for the service #access_times = 2:00-9:00 12:00-24:00 } 把"start.sh"改为"flag.sh",以下为flag.sh的具体内容#!/bin/sh # Add your startup script #!/bin/sh sed -i "s/flag{pwntestflag}/$GZCTF_FLAG/" /home/ctf/flag export GZCTF_FLAG="" # DO NOT DELETE /etc/init.d/xinetd start; sleep infinity;然后修改flag的内容为flag{pwntestflag}这个变量,不然随机不成功打包到本地Docker仓库docker build -t xiaoyuss/pwntest .编辑题目的时候注意端口启动实例提交flag测试
2025年05月18日
1,621 阅读
0 评论
0 点赞