Hikaru Lab

Back

本次赛后题目信息来自 CTF-Archives/2025-jskn-final 仓库,本站提供部分题目文件镜像服务。您可以下载部分题目的源文件。

MISC#

签到#

欢迎参加第五届极客少年挑战赛决赛,本页面左侧包含MISC/PWN/REVERSE/WEB 四个模块的题目,总计3000分,你可以根据特长自行选择答题顺序。

  • 比赛时间:8月29日09:00-13:00;比赛时长:240分钟;
  • 各分类下的题目不要求按顺序完成,可自由答题。 接下来试试这道题目来完成签到:按YYYYMMDD输入今天的日期。

签到题,与初赛的签到题完全一样,按照 YYYYMMDD 格式输入决赛当天日期 即可。

ANSWER: 20250829
plaintext

文档里的暗门#

据报道,WPS Office 2023 个人版 < 11.1.0.15120存在远程命令执行漏洞,网上已经有公开的信息,并且小明拿到了一个恶意样本,现在需要对这个样本分析,找到样本中的所使用的远程地址,以及地址中潜在的FLAG信息,附件为漏洞说明及样本。

下载题目附件后,得到两个文件:

  • 有关此漏洞的README说明文件
  • 已被写入恶意内容的Docx样本文件

根据Docx文件特性,将 .docx 文件名后缀改为 .zip 后使用解压缩工具解压压缩包,得到以下文件:

Docx_to_zip

根据 README.md 中的提示,恶意代码可能会被注入在文档的 插件 中,因此我们需要分析 /word/webExtensions/webExtension1.xml 文件。

在XML文件中,我们不难注意到一个 正常域名+被加密的字符串 组成的一个URL:

<wpswe:url>http://clientweb.docer.wps.cn.itsamazingwps.cn/?codeToRun=RkxBR3tXUFNfUkNFX0FOQUxZU0lTfQ==</wpswe:url>
xml

根据这个字符串的特性,不难发现这个字符串被 Base64加密 过,因此仅需解码即可。

WPS_decoded

ANSWER: FLAG{WPS_RCE_ANALYSIS}
plaintext

REVERSE#

逆向的钥匙#

运行附件中的程序后,会打印出加密后的Flag,请通过逆向分析了解加密逻辑,还原出原始的Flag信息。格式为:flag{xxxxxxxxxxxx}。

使用 IDA Pro 打开题目exe附件,阅读反编译代码,可以看到一串被加密的flag:

Here is the flag: 2d2938573e42203d202b43206f74737d18452a753c282e0
plaintext

那么我们仅需再找出程序的加密代码再加以分析即可:

main_code

de_code

通过分析得知,这段代码在使用密钥 KEY0E0E 对给定的明文(flag)做 XOR加密,输出的flag就是被加密后的密文。因此,我们可以写出以下解密脚本:

c = "2d2938573e42203d202b43206f74737d18452a753c282e0e4d"
k = "KEY0E0E"
k_bytes = [ord(c) for c in k]
c_bytes = bytes.fromhex(c)

result = bytearray()
for i, b in enumerate(c_bytes):
    result.append(b ^ k_bytes[i % len(k_bytes)])

print(result)
python

运行即可得出结果:

ANSWER: flag{reverse_188AuoEyckW}
plaintext

WEB#

网页的暗号#

点击下方链接,生成目标网站页面,观察网站页面的请求,并找到藏在请求中的FLAG信息。

让我们分析一下网页源代码:

不难看出这是一套经典的 AES加密 题目,在比赛现场我们可以通过抓包获取解密需要的 key/iv/data 信息,直接写脚本解密即可:

运行脚本后即可得到一串明文JSON字符,提取 flag 部分即可。

flag:a72a45aad3baabbb7d10385ed3e125c7:
plaintext

SVG的秘密#

小明想为自己的程序生成一个SVG图标,找到了在线的程序,他随手抓取了一个数据包,突然灵光一现,点击下方链接,生成目标网站页面,寻找网站中可能的漏洞,并读取/tmp/flag或/flag中的信息。

管他三七二十一先看前端与SVG生成有关的代码:

通过阅读代码可知,前端会发送一个POST请求到 generate_svg.php 以生成SVG文件。分析这个PHP文件可以发现这个文件使用了 libxml ,因此存在 XXE利用漏洞 ,可以直接通过 XML注入 来读取本地flag文件。

综上,我们可以写出以下脚本:

运行后即可得到flag。由于比赛已经结束,暂时无法复现。

计算器的阴谋#

小明研究数学问题的时候,找到了一个在线的数学计算器程序,它很好奇这个程序的实现原理,于是测试了一番,发现好像存在安全问题,点击下方链接,生成目标网站页面,寻找网站中可能的漏洞,并读取/tmp/flag或/flag中的信息。

我没记错的话这个好像是一道使用 Node.js 环境的题目。


还没写完,待补充,困了zzz

第五届极客少年决赛部分题解
https://www.mengxiblog.top/blog/geekyouth-2025-final
Author Zhu Hongrui
Published at 2025年9月5日
Written by a human, not generated by AI
Comment seems to stuck. Try to refresh?✨