MSC-2015移动安全挑战赛 第一题

2015年01月27日

这是最简单的题目,都在java层。 反编译后看关键源代码:

图

由于对android程序不熟悉,完全忽略了android.util.Log.i函数。后来看了大牛的writeup,才知道onClick函数里面的3个android.util.Log.i用输出日志信息的方式告诉了密码本、密码,以及猜测的结果。 我用的是标准的分析方法。跟进access$0函数。 密码生成规则是

图

这个代码的意思就是将用户的输入转成字节数组p4,以p4的每一个字节为索引,在密码本p3中找出对应的字符。这里需要注意的是p3是utf8编码,中文对应3个字节(一个字符),而ascii对应1个字节。 密码本和题目设置的密码(winhex提取):

图

输入就是找passwd的每一个字在密码本中的索引,输出索引对应的ascii值就可以了。 由于本人的python处理中文编码不过关,所以老老实实在winhex里面3个字节3个字节的搜索,手工计算了。

图

因为utf8中文字符3个字节,所以winhex里面的偏移要除以3.

题目下载