DiceCTF 2025 Quals

比赛地址:DiceCTF 2025 Quals

比赛时间:29 Mar 2025 05:00 CST - 31 Mar 2025 05:00 CST

复现的题目用🔁标注

Misc

bcu-binding

Challenge

misc/bcu-binding

hgarrereyn

Comrades, we found this old manual in our basement. Can you see if there’s anything interesting about it?

Downloads

cpu_documentation.pdf

Solution

DiceCTF2025Quals-1

一搜 flag 就找到在这里了

1
dice{r3ad1ng_th4_d0cs_71ccd}

dicecap

Challenge

Solution

搜索 flag 找到这条流量里有个压缩包

DiceCTF2025Quals-2

导出后打开发现是经过加密的

DiceCTF2025Quals-3

经尝试发现不是伪加密,继续分析流量

DiceCTF2025Quals-4

发现这里正在传输一个 Linux 的可执行文件

DiceCTF2025Quals-5

用 IDA 打开发现是一个用来生成密码的程序

1
2
3
4
5
6
7
8
9
10
v1 = time(0LL);  // 获取当前UNIX时间戳
sprintf(s, "%d", (unsigned int)(v1 - v1 % 60)); // 向下取整到最近的分钟
src = setlocale(6, &locale); // 获取当前区域设置
strncpy(dest, src, 5uLL); // 复制前5个字符
dest[5] = 0; // 确保字符串以null结尾
v3 = getlogin(); // 获取当前登录用户名
strcat(v6, s);
strcat(v6, dest);
strcat(v6, v3);
printf("The password is:%s\n", v6); // 将[时间戳][区域前5字符][用户名]组合起来输出

因此如果当前时间是 2025-03-29 13:40:00(UNIX 时间戳 1743248400),区域设置为 "zh_CN",用户名为 "kali",则生成的密码就应该是 1743226800zh_CNkali,实时也正是如此

DiceCTF2025Quals-6

因此往回翻翻看有没有相关的记录,发现这条中提到了一个时间戳 1743126493

DiceCTF2025Quals-7

因此密码的时间戳部分应该就是 1743126480

DiceCTF2025Quals-8

接着往下找,从这条流量可以得知用户名应该是 hacker。因为用户在试密码,可以知道前半部分是密码,那么后半部分应该就是用户名了。

Dice CTF 的主办方在美国纽约,因此推测区域是 en_US

组合起来就是 1743126480en_UShacker,用这个密码解开压缩包得到 flag

1
dice{5k1d_y0ur_w@y_t0_v1ct0ry_t0d4y!!!}