题目要求
这是开发者的第一个移动应用程序。他们正在尝试安全地存储秘密的手。他们中的一个可以是国旗吗?
apk下载地址:https://github.com/ctfs/write-ups-2017/blob/10bad9bd24b3f84c761faa4d78e223a3a29b2959/bsidessf-ctf-2017/reversing/pinlock-150/pinstore.apk
----------------writeup----------------------------------
首先下载文件后安装,查看应用,大致了解应用不情况,应用安装截图如下:
通过dex2jar反编译apk,通过jd-gui查看代码,通过查看入口activity,可知,
接受用户输入字符串为str2,数据库读取str1
跟中数据库读取函数fetchPin()可知,该函数读取pinDB数据表内容如图
查看db类获取数据库存放位置,如下:
通过adb shell 进入数据库存放目录,发现2个db文件如下:
下载数据库pinlock.db文件查找fetchPin找查找内容得到一个hash指通过查询得知该明文为7498
继续分析代码看到应用获取用户输入内容后经过sha1加密后与数据库中存放字符串进行比较,然后生成新对象,
由于之前解密查到哈兮之为7498,因此在apk中直接输入该值,应用反应如下:
应用未给出flag,继续分析代码
--能力有限仍需女里学习java。