首页
社区
课程
招聘
[原创]阿里移动安全挑战赛解题思路
发表于: 2015-10-19 13:39 4178

[原创]阿里移动安全挑战赛解题思路

2015-10-19 13:39
4178
第一次做这个移动大赛,第一次在看雪发帖,好鸡冻啊。。。总算可以和大神们更进一步了。。

好了,直接进入主题吧。
虽然只做出来了一道题,但是,我还是会努力的。。

android第一题:
首先拿到这个题,先去安装上去,发现,输入带字母的密码,直接就报错。只有输入10位以内的纯数字的时候才会等好几秒出现错误。分析可以知道,密码为10位以内的纯数字。
看到这里是不是觉得可以暴力破解了?这里当然可以,不过我没有试。我可是来跟大神们学习的,怎么可能这么来做题。

于是,反编译分析。发现jd-gui看到的java代码中,关键的check函数是看不到的,,哎。
只能看smali代码了,

回头看smali代码中关于check的函数。



这里发现最终比对字符串的地方。
所以试着直接打log,发现一直报错。。。

最后在wuyun上看到了一片文章,http://drops.wooyun.org/papers/6045
直接smali插桩,成功打出了log
但是,直接打v4和v10是有问题的,因为他们两个是long型,所以继续查询相关资料,发现,long可以转化为object,然后就可以直接打出来了。
如图,代码如下。


log打出来发现,v10为手动输入内容,v4为正确的密码。

最终结果为,v10+124750 = 520676


最后输入395926得到结果。

android第二题(没有做出来,提供个思路):

首先这道题是so的逆向,依然看到题目先去反编译一下,看看java代码,发现java代码中依然没有什么有用的信息,唯一有用的就是告诉了我们这是一个android ndk程序
然后查看smali代码,发现代码中有对apk的反打包操作。果断去掉
这里v2是自己加上去的,这边是对apk包中的文件作了签名校验,最终比对的地方就是这里,v1中村的字符串就是正确的,所以我们直接修改v2.



修改完成后就可以重打包了。

然后果断把so往ida中仍,在群里面听说有反调试,第一个想到的就看看,果然,真有。。。





果断nop掉,之后应该就可以调试了。。

然后ida里面先看看代码,发现主要的代码都在这个函数中


跟进去。。发现。。。。这个算法有好几层的循环,分析了一阵,只分析了一个大概,最后也没有做出来。
分析发现,这道题在判断的时候判断输入是否为16位,其实需要我们输入的只有10位,后面的都是自动填充的,所以可能可以暴力破解,但是我们有试。
对这道题有一个疑问,就是开始的时候,在smali代码中的那段摩尔斯电码有什么用?
希望各位大牛解答。

ios第一题分析(没做出来):

发现很多大牛都秒了这道题,然后android第二题又没有思路了,就看看ios的吧。
拿到这道题,首先先在自己的设备中安装一下,发现安装不上去,说签名有问题。
解开包,发现果然没有签名,利用安卓的思路想着能不能重打包?
然后上网查了一下,发现重打包好麻烦,果断放弃了。

通过资料,发现通过越狱可以安装未签名的ipa,果断越狱,这里感谢盘古团队啊,要不然真没法做题了,哈哈。
软件装是装上了,可是,,,我的ios9,没法运行,看log好像是版本的关系。。。哎。。没办法了,我尽力了,只能回来ida分析一下,看看能不能找到什么。

这里通过查询资料发现了一个很好用的工具,class-dump。可以直接得到.h文件,这样就能知道ipa的函数调用关系了。

逆向发现很多base64加密的字符串,尝试解密,解出来是乱码,猜测应该是在程序中对base64做了相应的处理吧。分析发现里面有一个解密函数,但是现在已经没有时间了,所以最后也没有做出来。
其实主要对ios的应用不是很熟悉,之前完全没有接触过,不知道怎么去动态调试,如果可以注入日志的话,应该很容易就知道答案了吧?

做完题发现自己有太多的东西要去学习了,等各位大神的writeup出来之后一定要好好看看,学习学习。
上面没做出来的题有分析不正确的请帮忙指正一下吧,以免误导大家,顺便我也学习学习,嘿嘿。。
谢谢各位了。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//