ASC War Games 2025 总决赛 — Legacy Edition 挑战

65 阅读3分钟

官网:http://securitytech.cc/

ASC War Games 2025 总决赛 — Legacy Edition 挑战

在这篇文章中,我将带你逐步走过该挑战的解题过程。

注意:本挑战灵感来源于我与某位客户的真实渗透任务。

描述:这个商店看似无害,但你能否深入阴影,揭开它的秘密?

进入应用后,你会看到一个类似商店主页的页面,并带有搜索功能。

黑客的第一想法通常是 对输入(如搜索值或产品 ID)进行模糊测试或注入 payload

不幸的是,所有 GET 请求的响应都返回 301302404

此外,任何注入尝试都会得到 404Bad Request 或 “Product Not Found” 的提示。


起点

重新审查请求后,我们可以看到服务器是 IIS,应用基于 .NET 技术

因此,第一步是检查 IIS 短文件名枚举漏洞

我们使用了 Burp 插件 IIS Tilde Enumeration 来解决。

结果发现服务器确实存在漏洞,使我们能够收集目录和文件信息。

我们尝试直接访问目录,但目录列表被禁用。

我们又尝试了其他 HTTP 方法,如 OPTIONS 和 TRACE,但只有 DEBUG 方法返回 200 OK,确认该目录存在。

为了再次对该目录进行短文件名枚举,我们需要先确认其完整名称。

于是我们让 ChatGPT 生成一个字典,然后用 DEBUG 方法对目录进行 fuzz。

我们将请求发给 Burp Intruder,并用 DEBUG 方法跑。

最终得到目录名称是 fileupload

继续对该目录使用插件,又得到了新结果。

再次使用 Intruder + DEBUG,得到目录名称为 application

最后,插件发现目录下有一个名为 Home 的文件,扩展名被缩写为 .asp

我们直接访问:

http://<ip>/fileupload/application/home.aspx

页面显示为开发者准备的上传页面。


上传 Webshell

我们尝试上传 Webshell。

文件上传成功。

但是访问:

http://<ip>/fileupload/application/shell.aspx

时无法访问。

再次上传时,我们注意到请求体中包含一个 指定上传路径的参数

所以需要提供一个可访问路径来上传并执行 shell。

研究发现,.NET 应用通常位于:

C:\inetpub\wwwroot\

于是我们将 shell 上传到:

C:\inetpub\wwwroot\fileupload

上传成功,可以访问:

http://<ip>/fileupload/shell.aspx

Webshell 正常工作。


竞赛现场的调整

在比赛盲测阶段,队伍们已经拿到 Webshell,但找不到 flag。 于是我们更新了挑战(不为难他们),在桌面放置了一个 flag.txt 文件。


真实场景

真实场景的预期解法是:获取应用 DLL 文件(因为是 .NET 应用),反编译以拿到 flag。

我自己的方法是:

  1. 使用 Webshell 将 DLL 转为 Base64;
    1. 下载到本地;
    1. 反编译。

直接运行 strings 命令并未找到 flag。

于是我们用 dnSpy 反编译 DLL,并搜索 flag

果然发现 GetFlag 函数,它通过简单的 XOR 运算来混淆 flag。

我们用 ChatGPT 写了解密脚本,执行后成功解出 flag。

最终 Flag 为:

ASCWG{L3gacy_3dition_Name_Pwnd}

总结

以上就是全部过程,希望你们在阅读后有所收获。

公众号:安全狗的自我修养

vx:2207344074

Gitee:gitee.com/haidragon

GitHub:github.com/haidragon

Bilibili:haidragonx