VNCTF2024
0x01 TBXO
只会看了这一道,应该也只会这一道了。
打开后f5,发现全是这种无意义的也不是函数的东西,感觉是经过防止反汇编的处理,无奈只能看汇编代码。
shift+f12找有用的字符串,发现有一个welcome 和wrong right等字眼的字符,点进去查找引用看看,能很快定位到main函数,当然是没法f5的,动调一步一步调试看会去哪里
发现这个是scanf函数,要输入flag,不知道flag是多少位,发现输入错误后程序会直接中断。当时在调试的时候无意间发现了一些类似加密函数的汇编代码,因为就在这个scanf函数下面,也是多看了几眼,然后发现是一个tea加密,不过f5后的代码是有问题的,不够全面,而且有很多差错。
如图,首先先不谈这些v1,v4,v2的是什么东西,关是这个a1 什么什么的就反汇编得很糟糕了,点进去这个unk_CC3004,发现是一个长度40char的数据,盲猜是enc密文,再动调试一下输入长度40 的flag,发现能调试到这一个函数了,直接看汇编。
不难发现这个v1 就是 (a - 1),v4就是 a,然后edi是存储sum 的 寄存器,每次循环加上 -0x61C88647,动调发现循环0x20轮,很典型的tea加密,就是多异或了一次0x33,这些信息看f5伪代码肯定是看不出来的,所以还是建议看汇编代码,比较准确。
解密的逻辑
1 | __int32 key1 = 0x67626463, key2 = 0x696D616E, key3 = 0x79645F65, key4 = 0x6B696C69; |
完整脚本,只要把40位密文分成10份然后两两加密就好了
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 北海の小站!