介绍
qwb2019的一道逆向题,第一次做wasm的题目,竟然出奇的顺利。
分析方法
- 利用GitHub上的wabt可以将他反编译成c源码,不过可读性较差,再次编译一下(不能编译成可执行文件,只能编译成目标文件.o),用ida查看就可以静态调试了。
- 在本地用python开一个http服务,chrome访问,就可以动态调试了。
分析流程
- ida可以看到,main函数是f16函数,其中只调用了f54和f15。
- 动态调试可知,f54为输入函数,f15是应该就是check函数。
- 分析f15,发现是用xtea加密了flag的前32位,密钥为’\x00’*16
- 最后的check是就是用加密的结果依此异或一个值,最后的和要为0,所以每一位都要为0,也就是说异或值就是密文。
1 | // 密钥置0 |
解答方法
前32为密文用xtea解密,后6位直接用就好了,
需要注意的是python的xtea是错的,没仔细去看代码,但至少用在这里是不行的。
后记:其实是可以的,只是要在new的时候指定小端序就可以了。xtea.new('\x00'*16, endian="<")
脚本
1 |
|