Crack App | 某合伙人登录参数 apisign 逻辑分析

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Crack App | 某合伙人登录参数 apisign 逻辑分析

目录

  • 包名
  • 抓包分析
  • 加密分析
  • Python 实现请求流程

今日目标

样本后台回复【20221013】获取

抓包分析

打开 app,是一个登陆的界面

输入账号密码之后点击登录可以看到下面的请求

提交的参数中有一个参数值是 apisign

这个参数就是我们需要分析得加密参数

加密分析

先查一下壳,没有加固

直接搞到 jadx 里面找找线索

直接检索 apisign 这个关键参数,可以看到下面的结果

追进去,可以看到写着用到了 md5 的加密,参与计算的还有一个 key 以及 data

从 md5.key 追进去可以看到 key 是一个固定的字符串

public static final String MD5_KEY = "d367fxxxxxxxxxxxxxxx3fe05"

可以理解为是一个盐值

所以这里就需要知道后面参数的 data.toString 的值是什么,这里用 frida hook 打印一下

我们直接 hook ToMD5 这个方法

// com.softgarden.baselibrary.utils
function printStack(){
    var threadef = Java.use('java.lang.Thread');
    var threadinstance = threadef.$new();
    var stack = threadinstance.currentThread().getStackTrace();
    for(var i = 0;i<stack.length;i++){
        send("Full call stack:" + stack[i].toString());
    }
}
function main(){
    Java.perform(function(){
        var md5Class = Java.use("com.softgarden.baselibrary.utils.MD5Util");
        md5Class.ToMD5.implementation = function(arg1,arg2){
            console.log("arg1 ===> ",arg1);
            console.log("arg2 ===> ",arg2);
            var result = this.ToMD5(arg1,arg2);
            printStack()
            console.log('result ===> ',result);
            return result;
        }
    })
}
setImmediate(main)

hook 结果如下

可以清楚的看到 arg2 的参数就是提交的账号和密码

通过加密网站的验证,可以知道这里用到的 MD5 并没有魔改就是简单的加了一个盐

直接使用 Python 实现一个 md5 即可

Python 实现请求流程

import requests
from hashlib import md5
headers = {
    'Host': 'www.xxx.com',
    'User-Agent': 'okhttp/3.9.1',
}
decrypt_text = 'dxxxxxxxxxxxxxxxxxxxxx05'+'{"password":"dddddddddd","phone":"15865865585"}'
apisign = md5(decrypt_text.encode('utf8')).hexdigest()
print(apisign)
data = {
  'data': '{"password":"dddddddddd","phone":"15865865585"}',
  'apisign': apisign
}
response = requests.post('http://xxxx/App/Login/login', headers=headers, data=data)
print(response.text)

完事~

End.

相关文章
|
1月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
139 0
安卓项目:app注册/登录界面设计
|
1月前
|
UED
|
7天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
30天前
|
移动开发 前端开发 Android开发
开发指南059-App实现微信扫描登录
App是用uniapp开发的,打包为apk,上传到安卓平板中使用
|
2月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
|
3月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
3月前
|
安全 API 网络架构
【Azure Logic App】使用 Easy Auth 在标准逻辑应用(Standard Logic App)中触发工作流
【Azure Logic App】使用 Easy Auth 在标准逻辑应用(Standard Logic App)中触发工作流
|
3月前
|
开发者
【Azure Logic App】中国区标准版本的逻辑应用(Standard Logic App)无法查看历史执行记录的解决之道
【Azure Logic App】中国区标准版本的逻辑应用(Standard Logic App)无法查看历史执行记录的解决之道

热门文章

最新文章