首页
社区
课程
招聘
[原创] KCTF2509 第九题 智斗邪首 WriteUp
发表于: 2025-9-1 19:58 2754

[原创] KCTF2509 第九题 智斗邪首 WriteUp

HHHso 活跃值
26
2025-9-1 19:58
2754


        题目样例对满足特定条件的商Quotient值进行校验,可以忽略商值校验业务逻辑而直接采用name&SN样例对应的商值;被除数为Dividend=xor_odd(name)得到,除数为Divisor=cnl_num_unpack(sn)得到;序列号可通过sn=cnl_num_pack(Dividend_of_KCTF/Quotient)计算得到;题目.NET通过调用释放出来的打包为exe的python样例计算高精度商;.NET做了混淆,并使用Enigma Virtual Box打包。直接通过解包、反混淆、还原python代码等手段解析得解。




如何识别是 Enigma Virtual Box打包的?

如果之前接触过,当看到下图相关节段名时,应该能初步猜定。由于之前没接触过,以为是出题着自己写的封装壳,一度想翻出尘封的牛刀去把IL字节码截取出来重构应用。



从应用入口处,我们可以猜定其跟.NET有关。


我们看看在应用入口前执行的线程回调函数,我们看到对全局变量gv_W50_src进行移动(大小为0x50)


我们在gv_W50_src全局变量的最后一个成员相关数据发现一些敏感字符串

我们在github搜索到关联项目内容


并得到现成可用的Enigma Virtual Box解包工具,参考附件




解包出来后,可以拖进ILSpy进行反编译,如下图,其混淆并带有中文名,这里我们用de4dot工具反混淆下,方便后续直接调用



实际在用binwalk查看原exe样例时,我们发现其内含de4dot相关信息,如下图所示


通过de4dot工具反混淆简单清除下混淆后,结果如下,




由于其类和方法很多都声明为internal和private,用powershell直接加载执行指定类的静态方法或类对象的方法时,会比较麻烦,

这里我们直接用dnSpy将所有innternal和pirvate的类、方法、数据成员的访问属性都改为public,方法powershell直接调用测试



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

最后于 2025-9-1 19:59 被HHHso编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回