android-crackme-challenge write-up

来源:互联网 发布:数据库实体是什么 编辑:程序博客网 时间:2024/06/06 15:43

地址:
https://github.com/reoky/android-crackme-challenge
由于已经给出了源码,我们要做的是不去看源码,然后编译出apk安装到android上,然后去解题。

challenge-one

先用android studio编译生成apk。有一些坑,注意这个项目之前是一个eclipse项目,导入到android studio的时候需要注意一些事(build.gradle中的classpath还有gradle版本,android support版本等)。详情见:
http://www.jianshu.com/p/0e5e5e5a06d0
https://stackoverflow.com/questions/42777321/could-not-determine-the-class-path-for-interface-com-android-builder-model-andro

先找入口Activity

这里写图片描述
使用jadx打开这个apk
这里写图片描述
或者凭经验就可以找到入口Activity。
这里写图片描述
然后看到这是一个FragmentActivity,然后找Check按钮的监听器。
这里写图片描述
然后在android中输入poorly-protected-secret即可成功。



解法2

从它写入的文件中查看
这里写图片描述

challenge-two

注意:坑
gradle-wrapper.properties
这里写图片描述

原因

gradle 2.2以前使用 runProguard false
gradle 2.2以后使用 minifyEnabled false
参考:
http://blog.csdn.net/u012964796/article/details/42493555

然后com.android.suppoer:support-v4的版本不能写错,要写本地已有的,不能只写个19,要写全名,否则会找不到。
这里写图片描述
查看本地支持的版本
这里写图片描述

思路

跟上一题一样。
找到按钮的监听器
这里写图片描述
说明这里email的值必须为manager@corp.net
然后secret的值的md5必须为b2c4782f0afc0d9ccf21af70ac6c5c7e
扔到google里
http://pmd5.com/about/detail.aspx?code=b2c4782f0afc0d9ccf21af70ac6c5c7e
找到解密之后的值为zipdrive



challenge-three

使android跟burp所在机器处在同一内网。经测试用lobby网络无法访问,改用另一台android发热点出来,给Mac和测试android机在某一个无线网,然后测试android机设置burp所在机(Mac)为代理,然后修改返回的包,在返回的html中任意位置插入so-much-snow字符串即可。



challenge-four

参考write-up说下载一个模拟位置的app即可,我觉得这样技术含量太低,于是用Xposed hook了一下android.location.location接口(由com.reoky.crackme.fragments.ChallengeFourFragment实现该接口)的onLocationChanged()方法,然而还是不成功,hook了但是没有反应。然后尝试hook android.location.LocationonLocationChanged()方法依然不成功,还提示我不能hook interfaces。最终去google搜了一下android location hook找到以下博客
参考:
http://blog.csdn.net/u012889434/article/details/61921933
于是改成hook com.android.server.LocationManagerServicereportLocation()方法。然而依然不成功,待续。。。