-
-
[原创]KCTF2024防守篇提交题目
-
发表于: 2024-7-28 03:38 337
-
附件题目是按《5.2.2 Windows方案二》设计的CrackMe,由于是第一次参加防守提交题目,不清楚是否直接在这里提供原始资料,所以附件资料加密了,密码我单独再提供。
解压密码:kx.1111
此题的解题思路:
通过给出的一组user和serial,使用调试工具OD和IDA了解大概的解密过程
1.将serial字符映射转成字节serial2;
2.使用DictTable字典对serial2做一次卷轴式全异域得到serial3;
3.计算出serial3除最后一个字节的BCC码,这个BCC码与serial3的最后一个字节进行异域,得到BCC2,
再用BCC2与serial3除最后一个字节外的所有字节异域得到serial4;
4.计算user的BCC码,这个BCC码的低半字节的2倍为目标值TargetFlag密文在MaskTable表里的偏移量;
5.通过调试工具可以找到TargetFlag的明文,即也知道了它的长度,且从代码可以判断TargetFlag的明文和密文长度一样;
6.判断MaskTable表里除了TargetFlag密文外的其他字节是否正确;
7.取出TargetFlag密文值,使用DictTable字典对每一个字节做__rol循环左移DictTable[i]%8次;
8.上一步得到的TargetFlag明文与程序内置的固定值做一致性比较,如果一样则成功了.
9.此题的另一个考查点是DictTable字典和MaskTable表,如果分析者在使用动态调试工具断点调试分析时,
且断点落在解密函数或main函数内时DictTable字典和MaskTable表的值会变化,会影响解密结果,
如果不清楚动态调试工具的断点原理的情况下会增加难度.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- [原创]签到题 逐光启航 233
- [原创]KCTF2024防守篇提交题目 338
- [原创]第一题 失控的AI 3598
- [分享]题目名称 第六题 病疫先兆--解题基本思路 7237