pwnhub 掏出你的小手机 writeup

pwnhub出的第一道安卓题目,用偷鸡的方法做掉了,虽然拿了一血但没有完整地分析完整套流程,还是要脚踏实地!

转载请联系本人,否则作侵权处理。 相关文件链接:https://github.com/LeadroyaL/attachment_repo/tree/master/pwnhub-FindMyDex (FindMyDex.apk 和 real.dex)

这是一个用native写的Activity,是第二次见,还好这次没有上llvm,看起来不是非常丑,这道题基本在偷鸡。。。

一开始am start -n com.a.sample.findmydex/.MainActivity,一直是ClassNotFound,翻了一下好像确实是不存在的,可能被藏起来了。

手摇晃100次,防止一遍摇晃一边解密的情况出现,之后进入了check界面,看到so里有一段uncompress和remove,以及两个字符串/data/data/com.a.sample.findmydex/files/classes.dex/data/data/com.a.sample.findmydex/files/odex,可达鸭眉头一皱,发现这个so并不简单。

到这两个目录下瞅一眼,只看到了odex,估计是dex被删掉了,毕竟有个remove函数

显然是先解压、再写文件、关闭,在Log里看到了Congratulations,所以估计这个是最正常的分支,而且remove掉了那个文件。

这里是偷鸡的第一步,如果手速够快,可以在remove之前、写文件完成之后,将文件拷贝出来,显然我手速不够快,而且要摇100次,我没有3只手。于是挂上ida,在remove之前断下来,手摇100次。果然正确断下来,而且此时dex文件被我拖出来了。


之后看看dex里面的逻辑,就是那个MainActivityCipher,从资源里找一下对应的几个String,错误是No~You didn't got me.,正确是Yes! You got me.,加密的第一个参数是输入,第二个参数是I have a male fish and a female fish.。这不是在暗示吗,twofish加密?结果是一个48byte

看一眼加密的类,发现太长了没法儿看,我还是觉得是个twofish,于是搜了一下里面的常数。

尴尬,果然是twofish,第一个参数是输入,第二个参数估计是密钥,就是那串I have a male fish and a female fish.,但IV和加密类型好像还不知道。

算了,偷鸡第二步。。。找个在线加解密的网站,http://tool.chacuo.net/crypttwofish; 把对应的数据都输进去,woc,居然给了flag。。。

pwnhub{flag:TH3y_Io<e_EACh_OTh3r_FOrEUER}

偷鸡成功。。。于是就很快地搞定啦;


总体来说,第一步找到dex,第二步看出twofish加密,之后就稳的不行了。