pinstore解题步骤

题目要求
这是开发者的第一个移动应用程序。他们正在尝试安全地存储秘密的手。他们中的一个可以是国旗吗?
apk下载地址:https://github.com/ctfs/write-ups-2017/blob/10bad9bd24b3f84c761faa4d78e223a3a29b2959/bsidessf-ctf-2017/reversing/pinlock-150/pinstore.apk

----------------writeup----------------------------------
首先下载文件后安装,查看应用,大致了解应用不情况,应用安装截图如下:

pinstore解题步骤_第1张图片
image.png

通过dex2jar反编译apk,通过jd-gui查看代码,通过查看入口activity,可知,
接受用户输入字符串为str2,数据库读取str1

pinstore解题步骤_第2张图片
image.png

跟中数据库读取函数fetchPin()可知,该函数读取pinDB数据表内容如图

pinstore解题步骤_第3张图片
image.png

查看db类获取数据库存放位置,如下:

image.png

通过adb shell 进入数据库存放目录,发现2个db文件如下:

pinstore解题步骤_第4张图片
image.png

下载数据库pinlock.db文件查找fetchPin找查找内容得到一个hash指通过查询得知该明文为7498

pinstore解题步骤_第5张图片
image.png

继续分析代码看到应用获取用户输入内容后经过sha1加密后与数据库中存放字符串进行比较,然后生成新对象,

pinstore解题步骤_第6张图片
image.png

由于之前解密查到哈兮之为7498,因此在apk中直接输入该值,应用反应如下:

pinstore解题步骤_第7张图片
image.png

应用未给出flag,继续分析代码
--能力有限仍需女里学习java。

你可能感兴趣的:(pinstore解题步骤)