猿人学2022安卓逆向第5题 :双向认证

双向认证,那么就需要有证书了,打开APP后看看 在assets 文件夹中 是否有证书
在这里插入图片描述
确实可以看到有一个客户端的证书,是.bks 的

那么r0ysue大佬的 r0capture 依旧可以排上用场,直接可以dump 下来.p12的证书 到手机的 SDcard/Download 目录下,密码为r0ysue

使用r0capture dump 证书

使用Spawm模式运行
记得给app 手动开启 存储权限
在这里插入图片描述

然后发现竟然卡住了。。。。。证书也没有dump下来。。。。

那就换一种思路呗。。。。。

使用 tracer-keystore 获取证书密钥

在这里插入图片描述
密钥获取成功 = > : MZ4cozY8Qu32UzGe

使用 keyStrore 进行证书转换

在这里插入图片描述
在这里插入图片描述
然后通过Charles 进行 导入证书

然后我又开始怀疑人生了。。。。证书导入 总是显示密码错误。。。。

在这里插入图片描述

重新使用 r0capture

等等。。。。诶 ,我刚才使用的 frida 14.2.17 的会不会是版本太高导致的bug

使用frida 12.8.0 嘞?

试一下

重新 使用 frida-server 12.8.0
然后重新运行 r0capture

在这里插入图片描述
嘿嘿 打印出来了!!!! 果然 frida 极其的不稳定,最好 还是 多安装几个版本

获取 第5题的 post请求

可以看到

post 请求
host => 180.76.60.244:18443
path => /api/app5
Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.14.9
data = > page=1

竟然没有带任何的加密参数。。。。。

那么就简单了,直接 使用python 写一下 请求就行

python 请求

代码如下

from requests.packages import urllib3
import requests_pkcs12
urllib3.disable_warnings()


def get_data():
    num = 0
    for i in range(1,101):
        url = 'https://180.76.60.244:18443/api/app5'

        headers = {
            "Content-Type": "application/x-www-form-urlencoded",
            "Connection": "Keep-Alive",
            "Accept-Encoding": "gzip",
            "User-Agent": "okhttp/3.14.9"
        }

        data = {
            'page' : i
        }
        rsp = requests_pkcs12.post(url,headers=headers,data=data,pkcs12_filename='1.p12',pkcs12_password='MZ4cozY8Qu32UzGe',verify=False)

        data = rsp.json()
        print(data)
        for value in data['data']:
            num += int(value['value'])
        print('num=>',num)

if __name__ == '__main__':
    get_data()

    

效果如下 计算结果:8119432

在这里插入图片描述

在这里插入图片描述

总结

带证书的请求 使用 pip install requests-pkcs12

frida 最好在手机里面下至少两个版本,frida 极其的不稳定,高版本有可能会出现很多鸡肋的bug

双向认证的过程当中,就是找证书和密钥,然后另外的不用管

逆向的过程 总不会是一帆风顺的,其中有很多的坑,但是这个却是积累经验的

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐