简单CTF

2018-08-21  本文已影响0人  0xweng

了解应用的概况(View)

Screenshot_2018-08-21-14-37-33-228_pinlock.ctf.pi.png

用jadx打开apk文件观察源码

目录.PNG

找到程序的入口进行分析

if(pinFromDB.equalsIgnoreCase(hashOfEnteredPin){}
窃喜,我只要使下面两个相等就能得到flag?

观察DatabaseUtilities


于是乎就打开数据库,得到

pinDB:d8531a519b3d4dfebece0259f90b466a23efc57b
从上面可以知道得到的数据是经过处理的,


跳到CryptoUtilities

用工具计算出pin值:

打开程序输入pin:

两个方法:

修改Smali对应的寄存器值


1.把DatebaseUtilities.smali中的 const-string v1, "SELECT entry FROM secretsDBv1"改成: const-string v1, "SELECT entry FROM secretsDBv2"

  1. 把SecretDisplay.smali中的const-string v7, "v1",改成 const-string v7, "v2"

修改完成之后在输入前面得到的pin值,就得到了flag


解法2

得到pin -> 了解到secretsDBv1secretsDBv2分别对应得过程,然后修改smali代码;认真看了CryptoUtilities类会发现数据通过这个类处理之后才会得到①中得flag,那么我们可以写一段类似于这个功能得代码(简化

得到flag

总结

题目链接

上一篇 下一篇

猜你喜欢

热点阅读