XYCTF2025
本文最后更新于 2026年3月31日 下午
Fate
1 | |
这里我们的最终目的是通过/1337路由的sqlite查询查询到LAMENTXU字段
那么/1337限制必须内网访问,就用到了/proxy路由的ssrf,对url过滤了字母和点字符,这里我们用十进制绕过。
1 | |
下一步是/1337路由要求传参0和1,其中0可以用二次编码绕过
它对1进行binary_to_string,然后解析json,我们用ai写一个string_to_binary
1 | |
下面思考对name的长度限制怎么绕过,这里看了wp了解到了字典绕过,也就是name是一个字典那么它的长度就是1
接下来就是sqlite注入了,闭合就好

出题人已疯
bottle的SSTI可以直接访问到内部类,所以我们之间往os.a里面一个一个塞字符就行了
1 | |
这里最后两步如果用浏览器手动传参会有一点点问题,还是一个脚本一次性完成较好
出题人又疯
在上题的基础上过滤了一些关键字,我们可以用斜体、全角绕过
Now you see me1
源码中间藏了一段代码
1 | |
SSTI,过滤很严格,用fenjing梭不出来
首先观察漏洞点
1 | |
{##}是jinja里的注释标识,这里我们构造闭合即可,这里注意#要进行url编码
1 | |
下面我们看过滤的部分,request没有被过滤,所以我们考虑利用request的属性
request.mimetype可以获取HTTP头中content-type中的内容,那么我们就可以构造request.arg传参

接下来我们找一下链子,用getitem绕过中括号
1 | |
attr
1 | |
传参绕过下划线和关键字
1 | |

找到可利用的模块

1 | |
修改一下
1 | |

参考文献
babypop
之前新春杯做了一个字符增多的逃逸,这次是减少的,更抽象一些
1 | |
链子很简单,关键是如何调用
1 | |
我们最终的$safe_data长这样
1 | |
我们可控两部分,最终目的就是让UserProfile->preference = $b从而调用链子
也就是需要把";s:3:"bio";s:xxx:"吃掉从而加入恶意代码,这里只有21个字符所以我们补5个A
1 | |
最终
1 | |
CCPrevie
第一次做云安全题,这里直接贴一下wp
打开题目靶机,我们看到一个名为 CloudConnect的网页工具,其功能是测试网站连通性
这题的描述里说到服务部署在亚马逊云服务器上,并且是EC2实例,题目还说这是一个curl的代理
这是一道很典型的云安全题,云服务提供了元数据服务,允许实例访问自身的配置信息和凭证,攻击者可以利用SSRF漏洞访问这些元数据服务
AWS EC2 实例有一个众所周知的链路本地地址:169.254.169.254,实例内部的服务可以通过HTTP请求这个IP来获取自身的配置信息、网络信息以及最敏感的 IAM 凭证
所以我们直接用POC打,在输入框种输入payload:
1 | |
响应结果:

成功了!服务器返回了目录列表
接下来就可以挖IAM凭证了,首先我们先看IAM目录:
1 | |
响应:

然后查看凭证目录:
1 | |
这里我们发现了一个名为 admin-role 的角色:
然后我们接着看它的凭证
1 | |
直接拿到flag了:

下一代有下一代的问题
这里用wappalyzer工具看一眼,Nextjs版本16.0.6,好家伙又是CVE-2025-55182
直接打

