首页
社区
课程
招聘
[原创] 看雪·2025 KCTF 第七题 危局初现 by 心学
发表于: 2025-8-28 22:51 3592

[原创] 看雪·2025 KCTF 第七题 危局初现 by 心学

htg 活跃值
6
2025-8-28 22:51
3592

此题存在多解(暴力破解,有470个解)。正确输出 ok,错误输出 no。

        guess 需要在 给定的虚拟机下运行,其无法在 Ubuntu或Centos操作系统下运行,一时半会找不到动态调试的方法【放弃】,直接采用静态调试方法分析代码。


        其核心是:序列号为 14 个字符,其中前10个字符为小写16进制字符,即[0-9a-f],最后4个字符为"asas"。而前10个字符需满足设定的条件,可以通过求解方程来获取,可以用线性方程组【详见第四部分 线性方程组求解】(降低暴力破解时间开销)来获取解答,也可以通过编程暴力破解。

10个未知数,6个方程组,虽然有取值范围限制,但是若没有设定好边界条件或等式关系,极有可能造成多解。

程序的代码主要逻辑还是比较清晰,只是存在几点常量代换、运算代换,以及调用虚拟机内部的关键处增加干扰等。

程序采用 string_to_code(const str) 将循环变量进行了替换,初看代码比较费劲,可考虑直接拷贝代码后,进行整体替换处理。

替换前:

可以将直接将 string_to_code 函数拷贝到 VS 里,然后输出对应的结果,之后替换源码。

替换后:可以更为清晰看清楚代码结构。

这里应用到了两处干扰项,(v39 & 0x80),此时的v39尚未赋值,其运算的结果为0;v25=5,~4(反码的内存表现形式)实际就是 -5(补码的内存表现形式)。实际上就是 4+5+7+8+S9 = 8*S0-34

数值的反码和补码表现形式


结果就是 S0至S9的通解公式,我们知道各自取值为[0,15],那就可以以 S6(k4)、S7(k3)、S8(k2) 作为循环变量[0,15],并确保所计算的其他数值结果为 [0,15],可以加快寻求所有有效解的速度。


部分解

当前解 1:

84bfd4ffa6asas

当前解 2:

84bfe5fe96asas

当前解 3:

84bff6fd86asas


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-8-29 16:14 被htg编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回