羊城杯 Ez加密器
羊城杯 Ez加密器
第一部分
通过查找字符串找到主函数:
看到这里有四个函数,我们一一分析,第一个函数没有看出有什么的特别,我们看第二个:第二个信息量就很大了,首先可以看到两个提示输入,那么下面的两个应该是接受输入的的函数了。
这里sub_140003A20这个函数看的不是很懂,先放一下,后面的sub_140003910这个函数和前面的sub_140003A20函数结构很像,我们动态调试一下这两个函数,动态调试时发现fun1(sub_140003A20)这个函数是验证我们的验证码是否正确,同时这里的fun1他限制了验证码是6位的数字,点进fun1里的a1可以发现:
这里也可以看到这里的两个数据的长度分别是6和40,a000000存储着我们的验证码,那么上面就存储着我们的flag,调试看看:
猜测正确。其实这里也可以把fun1的前半段代码复制下来爆破出验证码的长度,因为fun1中只有len(a1)为6时才能让v3
为1
后半部分的代码时验证输入的是不是字符串,同样可以爆破,动态调试试,当然也可以GPT(大人,时代变了@w@)
第二部分
分析完第二个函数,我们看看后面两个:第三个是base64变表加密,第四个是一个DES加密可以用IDA的Signsrch插件查出。
最后的比较部分如果我们直接看Str1:
如果直接那这里的data去逆向,就会出错,这里的几个‘’>‘和”?“字符串很可疑,所以我们在动态调试一下看看这里的data是不是被改变了:
果然,是被更改了,这里我们可以查找这个字符串的引用找到加密的部分:
其实这里就在DES加密的函数里面。
第三部分
信息基本齐全了,EXP:
1 | from pyDes import * |
评论