0x00 日常查壳
无壳64位
0x01 分析main函数
找到主函数,发现是openssl库的DES加密,然后开头一段DES加密,密钥和密文已经给了
通过动调查看初始化的密钥
记录下网卡又出127.0.0.1
参考文章:https://blog.csdn.net/baidu_18624493/article/details/122297400
接着报错,ubuntu18.04后已经不支持这个库了,于是我换了18.04解决了这个问题
参考文章:https://askubuntu.com/questions/1173587/e-package-libssl1-0-0-has-no-installation-candidate
动调运行到这,查看内存得到初始化后的密钥
PS: v5的数据没必要,开始在那bangzhu了一会
得到密钥
1 | from Crypto.Cipher import DES, AES |
0x02 分析SMC后的函数
就是我们又输入一段,然后经过AES加密,两段异或的加密,最后比较(比较那段ida抽风了,去汇编上看即可)
动调得到密文
于是来理一下第二段输入
- AES加密
- 一段异或加密(解密倒着来即可)
- 一段异或加密(已知最后一位)
0x03 GetFlag!
最后一段异或加密我们结果是分叉的,也就是有多解的情况,所以我们要穷举所有结果,于是就要写个DFS(深度优先搜索)即可
1 | from Crypto.Cipher import DES, AES |
GetFlag!(buuoj上MD5加密后上交)
关于DFS扩展
本来想直接塞这篇博客,学习一番,决定单独出一篇放到Book里
🍬
🍪
About this Post
This post is written by P.Z, licensed under CC BY-NC 4.0.