【总结】注册码泄露原理以及例题

admin 2024年8月8日20:50:32评论8 views字数 696阅读2分19秒阅读模式

题目给了小明的机器码:1653643685031597

用户user_id:xiaoming

可以看到题目采用了SIMD指令集

【总结】注册码泄露原理以及例题

该指令格式在CTF和攻防对抗中经常出现,可以提高执行效率的同时也可以增加逆向的难度。

对于此类指令和题目,我们分析的方法是:遇到查意思,查的多了就跟看正常代码一样,采用动态分析

机器码修改

将内置的机器码改为题目给的:1653643685031597

【总结】注册码泄露原理以及例题
【总结】注册码泄露原理以及例题

修改成功:

【总结】注册码泄露原理以及例题
【总结】注册码泄露原理以及例题

得到flag的时候跟machine这个有很大关系

动态分析

machine_id处理

【总结】注册码泄露原理以及例题

在这个加密函数中

【总结】注册码泄露原理以及例题

发现了MD5特征

经过动调拿到函数加密后的结果

【总结】注册码泄露原理以及例题

与我们的猜测是相符的

【总结】注册码泄露原理以及例题

可以发现最终md5(机器码)变成

【总结】注册码泄露原理以及例题

user_id处理

【总结】注册码泄露原理以及例题
【总结】注册码泄露原理以及例题

和调试machine加密一样,最终MD5(user_id)变成:

【总结】注册码泄露原理以及例题

最终处理

【总结】注册码泄露原理以及例题
【总结】注册码泄露原理以及例题

经过之前相同的加密

【总结】注册码泄露原理以及例题

{width="5.75in" height="0.8645833333333334in"}

变成这个数字:1228240365737281

然而这还没完,居然进行两次相同加密

【总结】注册码泄露原理以及例题

再次加密后的结果:0502036271810858

【总结】注册码泄露原理以及例题
【总结】注册码泄露原理以及例题
【总结】注册码泄露原理以及例题

可以发现此题出的很好,利用了密码比较的漏洞,没有将密文给出,而是将生成的密文在中间给出,从而造成了数据泄露。

得到flag

回顾加密流程,可以发现

f(key) = f( f( f(md5(machine)) + f(md5(user_id)) ) )

那么题目给了得到flag的machine和user_id,可以得出

Key =f( f(md5(machine)) + f(md5(user_id)) )

所以最终flag


flag{1228240365737281}

原文始发于微信公众号(蚁景网安):【总结】注册码泄露原理以及例题

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月8日20:50:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【总结】注册码泄露原理以及例题http://cn-sec.com/archives/3047014.html

发表评论

匿名网友 填写信息