type
status
date
slug
summary
tags
category
icon
password
😀
以下为题目链接,供各位师傅下载练习 https://wwb.lanzout.com/iovY721r8pva
涉及考点: 白盒AES,.net程序的序列化模块,反序列化文件修复
工具使用:
我们将dotdot.exe拖到dnspy里面分析一下
notion image
我们对函数逐个分析
BBB函数是对字符串的检验,长度为16
notion image
这个函数是基于查表法实现的AES,很明显他没有让你输入密钥的过程
那我们该如何对它进行分析呢,这个时候我们就要使用DFA 差分故障攻击的方法
什么是差分故障攻击呢,简单来说就是插入故障数据,然后导致最后生成密文改变,从而推导出最后一轮密钥
由于dnspy是可以直接在上面修改源码的,所以我们直接在上面修改源码,然后重新编译。
notion image
右键选择编辑方法,修改之后选择编辑,这个时候我们还不能调
notion image
需要保存模块,点击全部保存,它会将这些的修改全都保存在新的exe里面,默认是覆盖原文件,这里我选择默认
notion image
我们首先先来测试一下,没有插入故障数据的时候,第十轮的密文是什么样的
我们在进行最后一轮之前插入一个字节的故障数据,然后看密文是什么样子
notion image
我们发现有四个字节不一样,说明我们插入的地方是正确的,我们多记录几个数据aaa[index]=x,index和x的值是要发生变化的
然后这里有个非常好用的库,phoenixAES,可以帮我们恢复最后一轮的密钥
notion image
自己生成exe
notion image
我们可以得到最初始的密钥
notion image
得到密钥是QWB2023HappyGame
然后我们解密AES
notion image
我们往下面分析,我们发现它经过字符串对比之后还有RC4加密,但是RC4同时也可以解密,然后我们可以先把License.dat给解密一下
notion image
我们把新生成的new.dat拖到010eidtor里面看一下
notion image
我们发现他调用了FFF方法
我们回到dnspy看FFF方法
发现是tea加密,然后加密的密钥就是我们的输入
notion image
然后我们还发现后面有比较的地方,密文在v28里面
notion image
但是由于程序经过了优化,所以我们在dnspy中无法看到v28的变量
我们需要去到ILspy里面查看v28,这里注意一定要用原程序进行查看
进行tea解密
notion image
然后我们还要去改一下程序
notion image
然后我们开始调试
notion image
发现有异常,是我们的dat文件出现了问题
这里贴一下出题人的样例代码
notion image
然后可以找到异常的位置
notion image
然后06,06 , 06,07是len
notion image
其实FFF函数这里也有提示,FFF的两个参数是string类型的,然后我们就是把刚才的两个的string,填进去
notion image
然后我们直接运行就行了
notion image

📎 参考文章

关于爆破迷宫路径的一系列思考RCTF-Noval_cpython复现及思考
Loading...
5m10v3
5m10v3
目前主攻方向为Re
Announcement
🎉5m10v3のBlog已经上线啦🎉
-- 感谢各位师傅的支持 ---
👏欢迎师傅们前来交流👏