题目描述:安全人员在应用市场发现一个版本信息异常的应用,要求试图找出该异常。
app下载地址:https://pan.baidu.com/s/1jIGB7xk
解题:
下载应用通过dex2jar反编译该应用,通过JD-JUI查看代码发现versioncode及versionname字段,如下图:
查找key判断位置如下图,
读取用户输入内容,判断是否等于 versionname每个字符异或versioncode,因此通过反向计算得到正确key计算代码如下:
#!/usr/bin/env python
#auth :free
#time :2017.6.7
def useKey():
versionName = 'X<cP[?PHNB<P?aj'
flagKey = ""
versionCode = 15
for i in range(0,len(versionName)):
rst=ord(list(versionName)[i])^versionCode
flagKey=flagKey+chr(rst)
print flagKey
if __name__ == '__main__':
useKey()