[Android Re][SCTF2019]Strange apk

冷笑话:项目bug太多 大家苦不堪言 于是领导要求程序员写一个可以修bug的程序以求一劳永逸

程序行为观察

在这里插入图片描述
打开app之后要求你输入一个flag 输入错误会输出something wrong

使用JEB打开apk文件寻找关键点

显然,第一步我们需要寻找app入口点
打开Manifest文件
在这里插入图片描述
显然 入口点是sctf.demo.myapplication.t,但是我们只能看到sctf.hello这个包。遇到这种情况很有可能是app动态释放文件(参考pc上面的压缩壳)

如何应对?

使用反射大师(安卓) ,frida dex dump(python)将app运行时候的dex给dump下来再进行分析

对dump下来的代码进行分析

在这里插入图片描述
果不其然,找到了关键位置sctf.demo.myapplication.t
在这里插入图片描述
但其在oncreate方法里面使用意图转到了sctf.demo.myapplication.MAIN
即sctf.demo.myapplication.s,并重写了onActivityResult根据返回结果进行操作
那我们不妨先分析sctf.demo.myapplication.s里面的逻辑

sctf.demo.myapplication.s里面的逻辑

在这里插入图片描述
可以看到其对输入进来的字符串进行了长度判断(length==30)
不满足条件直接返回错误信息

随后进行了分割,前12位被放入v1进行base64的编码转换(f.sctf(v1));(即使你没看这个方法的实现 通过后面比较的那一段字符串也应该能够看出是base64),所以可以断定其将输入进行了base64编码转换然后与c2N0ZntXM2xjMG1l进行比较,后面的字符串输入被放入v2

然后返回一个结果给sctf.demo.myapplication.t 如果前12位比较正确则返回v2(后18位字符串)然后进入sctf.demo.myapplication.t里面的逻辑 否则输出错误信息

对c2N0ZntXM2xjMG1l进行编码还原可以得到字符串sctf{W3lc0me

分析sctf.demo.myapplication.t

在这里插入图片描述
可以看到程序将syclover这个字符串进行了MD5加密之后和sctf.demo.myapplication.s返回的后18位字符串一起作为参数传入了一个f.encode的方法里面

先去加解密网站上面拿到syclover的MD5 : 8bfc8af07bca146c937f283b8ec768d4
然后分析这个方法
在这里插入图片描述
其逻辑很简单,将之前传入的后18位字符串按照偶数的方式(每隔一位放入一位)和syclover的md5放入一起形成新的字符串
再与~8t808_8A8n848r808i8d8-8w808r8l8d8}8比较 由于索引v3/v1其中的v1是传入的md5的length使得其每次都只能取到这个md5的索引0即第一位数字8 所以去除数字~8t808_8A8n848r808i8d8-8w808r8l8d8}8中的数字8即为剩下的flag
~t0_An4r0id-w0rld}

flag :sctf{W3lc0me~t0_An4r0id-w0rld}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值