论坛首页 CTF竞赛交流区 阅读主题

[原创]KCTF 2025 第4题 血色试炼wp

488 浏览 0 回复
#1 楼主 2026-06-01 21:08:55
先看main函数: 发现其中调用了LoadStringA从资源中加载字符串; 用7zip将exe文件作为压缩包打开, 拿出.rsrc/2052/strings.txt: 之后分析string_init为字符串结构体初始化函数, 在其中对参数右键Create new struct type..., 分析字符串结构为: 同时看到string_init引用了一个全局变量, 查找引用发现在TlsCallback函数中初始化为字符串"ThisEncAndDecKey";
同时TlsCallback函数中还初始化了变体base64表, aes_sbox, aes_inv_sbox, "tweakKey_2024521";
之后在Ntdll中查找了某些函数, 后续使用decrypt函数解密了资源中的字符串, 又有类似查找函数的系统调用号进行系统调用等操作, 感觉和算法关系不大先放一下, 先分析decrypt.
分析decrypt函数主要逻辑为: 首先用变体base64解码, 分成16byte每组用aes解密, 每组再与xorstream(组号+0x24D67344, "tweakKey_2024521")的结果进行异或;
xorstream逻辑为: 先将gidx+1重复4次小端序存入data_ptr, 然后: 用tweakey对data进行aes加密, 最后返回加密结果.
整合一下decrypt逻辑: 发现解密结果对不上, 判断AES的实现被更改过, 故将之前使用的Crypto.Cipher.AES换成了 bf8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1L8%4A6Z5N6g2)9J5c8V1q4q4f1#2)9J5k6q4m8&6N6r3S2G2L8R3`.`. 的版本准备对照分析调整, 但是之后发现了其它解题方式.
回到main函数, 函数后续调用了AddVectoredExceptionHandler通过tiggerfault的方式在ExceptionHandler进行加解密操作, 分析发现其中天然存在decrypt的逆函数encrypt, 就不用分析AES的实现更改再自己写encrypt函数了.
在main函数中, 会将用户名加密3次与序列号解密一次的结果做对比; 则在对比处下断点, 输入用户名KCTF可以拿到KCTF被加密3次的结果l/SxsR0BCjRZTmc7XWscrMv38iYuoiUECvi9Tuvi+ZiJZmdR5EcvVnTZOZvrnOrw
将其作为序列号输入可以拿到KCTF被加密2次的结果8g+JjodOZ4bcaurrKobFVzxuSGA2uDFJFyXqAlnTlKI=
再作为序列号输入一次可以拿到KCTF被加密1次的结果vCF5nc2wC5/sVISvceXVkY==
再作为用户名输入, 就可以拿到KCTF被加密4次的结果即用户名KCTF的序列号tSzQkyqcvZLgkwDltPF9RpInibA5fTpH/bJni2yvLzTKao2uL5eLZ5QIxPj8bsYWe48ZohC5/Jw3cNNAaX8/rA== ...

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-288221.htm

暂无回复,快来抢沙发吧!

请登录后参与讨论

立即登录 注册账号