论坛首页 安全工具分享区 阅读主题

[原创]看雪 2025·KCTF 第三题 邪影显现 by 5m10v3

176 浏览 0 回复
#1 楼主 2026-06-01 21:08:55
通过输入name,code从而来进行校验,题目要求以特定用户名('KCTF')获取code进行校验。无壳,32位程序
main函数的逻辑很简单,分别获取输入的name和code,同时将name和code作为两个参数传入check函数进行校验,同时check函数的返回值也作为判断值去判断正确和错误。主要的大头还是check函数,可以先看一下控制流程图,简直就是一面旗帜(当时看的这里确实萌发了投降的念头),不过我还是想把这个旗子给摘了。

利用FindCrypt这个插件,可以看到有md5,并且也是在我们的check函数里面

这里是将我们输入的name,经过md5之后作为一段hash值拼接在了KCTF2025后面跳过一些初始化变量的地方,我们可以定位这里开始对我们输入的code进行校验了,输入的code字符串的长度必须为48,并且为十六进制数,然后会将我们输入的字符串转化为24字节数存储在数组里面。往下分析首先遇到了第一个处理,进行了一个大小端的转化将24字节作为一个大数进行传递,同时还有乘积,mod操作,让我们联想到模幂运算,后面还有一个模逆运算,最低字节加一。由于伪代码太难看了并且有很多奇奇怪怪的循环,因此直接选择动调调试

在动态调试的过程中也发现了一件事情,就是这个模幂运算中的指数可以爆破出来,以下是在动态调试中的所想。
我在动调的时候发现了很多相似的地方,他们都在最低字节加一,所有就大胆测试了几个确实对应上了。但是模乘的指数太难看了,这个简单直接爆破,然后在以下这种地方设置断点观察进行模幂运算和模逆元之后的大数与断点处的进行比较。


然后我们还原一下check函数的逻辑这里写出解密脚本利用了sage这个工具 公开组序列号

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

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

请登录后参与讨论

立即登录 注册账号