当前位置: 首页 > news >正文

从APP小游戏到Web漏洞的发现

一、前因:

在对一次公司的一个麻将游戏APP进行渗透测试的时候发现,抓到HTTP请求的接口,但是反编译APK后发现没有在本身发现任何一个关于接口或者域名相关的关键字,对此感到了好奇。
于是直接解压后everything搜索了一下,发现域名关键词在global-metadata.dat文件中

二、global-metadata.dat是什么?

global-metadata.dat是Unity游戏开发引擎在构建过程中生成的文件之一。它包含了游戏项目的元数据信息,如类和方法的名称、类型信息等。这个文件对于Unity引擎在运行时正确加载和解析游戏项目非常重要。通常情况下,开发者不需要直接处理或操作global-metadata.dat文件。
global-metadata.dat是Il2cpp翻译C++代码之后存放类型和符号信息的文件,libil2cpp.so文件就是应用业务逻辑所在的文件。将global-metadata.dat中的类型和符号信息解析出来定位到libil2cpp.so中才能更方便的去做逆向分析。
简单的说,global-metadata.dat是为了将代码安全存储所存在的中转的unity开发中的解析符号文件。

这也说明了该app采用了unity游戏引擎开发。

三、怎么来的?

首先Unity可以使用Mono和IL2CPP两种方式来打包出APK
1、Unity使用Mono方式打出来的apk,我们可以直接从包内拿到Assembly-CSharp.dll,如果开发者没有对Assembly-CSharp.dll进行加密处理,那么我们可以很方便地使用ILSpy.exe对其进行反编译。
2、如果使用IL2CPP方式出包,则没有Assembly-CSharp.dll,不过,有一个IL2CppDumper工具,通过它,我们可以逆向得到Assembly-CSharp.dll,然后再进行分析
简单的来说呢,我们需要利用IL2CppDumper这个工具来逆向global-metadata.dat,这个工具还需要libil2cpp.so文件

四、判断加密

global-metadata.dat头部信息,正常是AF 1B B1 FA 18。可以看该APP出来并未进行加密,因此就无需额外的对抗了

五、解密

https://github.com/Perfare/Il2CppDumper
https://github.com/AndnixSH/Il2CppDumper-GUI

Il2CppDumper.exe input\libil2cpp.so input\global-metadata.dat output

1、dump.cs

里面放的是方法和类名,以及字段
Assembly-CSharp.dll 和 dump.cs 的内容是一致的

2、script.json

以json格式显示方法,类名,也存在路由信息等

3、stringliteral.json

以json格式显示所有的字符串详情,这里是我们要的关键

4、Assembly-CSharp.dll文件

这个文件反编译出的c#代码,

只找到了接口但是不知道字段怎么办?在上面我们获取到了大量的web路由,以common-activity为例 ,我们可以通过关键词在dump.cs里找到GetCommonActivity以此获得它的参数可能为id

六、发现的漏洞

1)之后通过上述的信息发现了大量接口,部分接口已经是以前的老活动残留下来的,对于游戏来说,会经常上线一些活动,这些活动可以免费领取金币或者奖励,但是活动下架了接口却没有下架

例如发现了可能为历史福袋的接口,针对该接口进行了并发,成功实现了大量金币的获取
xxx/share/share-fudai-award

2)接口通用问题
通过上述发现了存在的大量接口后,由于是mj类游戏,因此公司存在大量的马甲包(发行体和玩法不一样,界面也不一样,但是后端接口基本是一样的套壳),例如福建mj和四川mj就可以拥有一样的后端API,但是长期运营的部门和人员可能不是一个。

因此也就产生了接口通用问题,拿A APP的接口去碰撞B APP的接口,从而达到某些隐藏接口的获取,例如金币可以大量获取。

利用隐藏接口无限触发可导致获取无限的金币

七、xxtea算法和信息泄露漏洞

很多小游戏都采用了Cocos2d-x进行开发,Cocos2d-x 衍生了很多版本,例如Cocos2d-lua ,Cocos2d-js,其中最流行的就是cocos2d-lua

例如某个APK程序解压后如下

assets目录下存放大量Luac,这些是编译后的lua文件,能直接被lua虚拟机直接解析
luac后缀是被编译过的lua脚本,也有可能是被编译然后再加密的(否则一下就被反编译了),而后缀也有可能不是luac,而是luax,luaxxxx等等,可以自定义

Cocos-2dx对于lua脚本加密提供了一种轻量级解决方案, 算法是xxtea,一般来说未经过二次处理的xxtea加密可以通过一下方式解密

xxtea官方加解密需要三个参数:
1、文件路径     2、加密sgin      3、加密key
解密脚本:https://github.com/lyzz0612/cocos_decrypt
1、获取sign
hexdump   -C  xxxxxx.luac  |  head -n 5 
2、获取加密key
strings libcocos2dcpp.so |  grep -i  sign值xxxx   -A 3 -B 3

八、解密后的作用

1)在lua文件中获取硬编码Key,例如以下lua直接获取了wx的secret

2)算法解密
在httpxxx.lua文件中一般存放和发送http请求相关的信息,如下所所示

在解密后即可通过关键字获取到信息

接着回溯方法,找到了相关的算法

算法值具象化为如下所示

md5Encode("request_key=" .. funtable.apihubKey .. "&request_time=" .. time .. "&request_secret=" .. funtable.apihubSecret .. "||" .. laterurl)  md5(request_key=50023.okevxyosgu&request_time=1678347337&request_secret=f2cf7xf11x689ed7bx397x7c0533fxd||{"phone":"","account":"iphone","weixin":"1","system":"29","phone_version":"29","phone_type":"020000000000","network":"","type":"1","package_id":"3010","game_version":"70406","content":"\"><111>\n","regtime":"1970-01-01 08:00:00","qq":"1","sdk_id":"xxxxx","numid":0,"ext":"{\"usertype\":7,\"device\":\"xxxxx\",\"lobbyver\":\"2.0.0.949\",\"logintype\":6}","areatypeid":3,"gameid":9,"areaid":5016,"images":"1"})

通过解密xxteam还原代码,再到获取签名解密,最后才能实现正常接口的抓包改包,发现更多的漏洞。

相关文章:

从APP小游戏到Web漏洞的发现

一、前因&#xff1a; 在对一次公司的一个麻将游戏APP进行渗透测试的时候发现&#xff0c;抓到HTTP请求的接口&#xff0c;但是反编译APK后发现没有在本身发现任何一个关于接口或者域名相关的关键字&#xff0c;对此感到了好奇。 于是直接解压后everything搜索了一下&#xff…...

设计模式07-结构型模式(装饰模式/外观模式/代理模式/Java)

4.4 装饰模式 4.4.1 装饰模式的定义 1.动机&#xff1a;在不改变一个对象本身功能的基础上给对象增加额外的新行为 2.定义&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活 4.4.2 装饰模式的结构…...

C# 广播技术——发现局域网设备技术——

一广播技术应用 客户端发现与管理&#xff1a;软件可以通过广播消息来发现网络中的客户端&#xff0c;从而方便对客户端进行集中管理和监控。服务通知&#xff1a;向所有客户端广播重要的通知、更新或警告信息&#xff0c;确保客户端及时了解相关情况。资源共享与分配&#xf…...

【QA】windows和linux陷入系统调用后有什么区别?

最近被某面试官的这个问题拷打&#xff0c;当场脸烧起来… 首先讲讲系统调用&#xff1a; 系统调用是操作系统为调用者提供服务的接口&#xff0c;以便程序员聚焦于业务问题。分为文件操作&#xff0c;内存分配&#xff0c;进程管理等等。用户使用系统调用后会触发软中断&…...

Github 2024-11-01 开源项目月报 Top19

根据Github Trendings的统计,本月(2024-11-01统计)共有19个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目3JavaScript项目3Svelte项目1Jupyter Notebook项目1Ruby项目1HTML项目1Rust项目1Java项目1C++项目1Go项目1Python中的…...

Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control

链接&#xff1a;深度学习模型预测控制 &#xff08;如果认为有用&#xff0c;动动小手为我点亮github小星星哦&#xff09;&#xff0c;持续更新中…… 链接&#xff1a;WangXiaoMingo/TensorDL-MPC&#xff1a;DL-MPC&#xff08;深度学习模型预测控制&#xff09;是基于 P…...

Anki插件Export deck to html的改造

在Anki中进行复习时&#xff0c;每次只能打开一条笔记。如果积累了很多笔记&#xff0c;有时候会有将它们集中输出成一个pdf进行阅读的想法。Anki插件Export deck to html&#xff08;安装ID&#xff1a;1897277426&#xff09;就有这个功能。但是&#xff0c;这个插件目前存在…...

csdn 记载文章十分缓慢

现象&#xff1a;其它网站能够正常访问&#xff0c;但只要点击某个 csdn 页面就会等很久 &#xff08;本文只针对 csdn 网页&#xff0c;其他网页出现类似情况可以同样处理&#xff09; 产生这种现象的原因&#xff1a; 这种情况很有可能是在访问 CSDN 主页时&#xff0c;需要向…...

python通过pyperclip库操作剪贴板

pyperclip介绍 pyperclip是一个python库用于操作剪贴板&#xff0c;可以非常方便地将文本复制到剪贴板或从剪贴板获取文本。 通过pip进行安装&#xff1a;pip install pyperclip pyperclip的github地址 pyperclip使用 复制到剪贴板 import pypercliptext "Hello, Wo…...

LSTM——长短期记忆神经网络

目录 1.LSTM 工作原理 2.LSTM的代码实现 3.代码详解 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;用于解决长序列中的长期依赖问题。它通过引入门机制&#xff0c;控制信息的流入、保留和输出&…...

10进阶篇:运用第一性原理解答“是什么”类型题目

在667分析题题型中,关于“如何做”和“好处是什么”的题目,许多同学都能较好地运用前述的667作答地图开展答题,但是唯独在“是什么”类型题目(也可以叫做认识型题目),不知从何下手。这种题目通常要求我们理解、分析,并展望未来的发展方向,而结构化、逻辑清晰的答案往往…...

【elkb】索引生命周期管理

索引生命周期管理 Index lifecycle management(索引生命周期管理)是elasticsearch提供的一种用于自动管理索引的生命周期的功能。允许使用者定义索引的各个阶段&#xff0c;从创建至删除。并允许使用者在每个阶段定义索引需要执行的特定动作。这些动作包含索引创建&#xff0c…...

江协科技STM32学习- P25 UART串口协议

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

15分钟学 Go 第 22 天:包的使用

第22天&#xff1a;包的使用 欢迎来到Go语言的第22天&#xff01;今天&#xff0c;我们将深入探讨如何创建和使用包。通过学习包的使用&#xff0c;你将能够更好组织你的代码&#xff0c;提高复用性和可维护性。 1. 包的概念 在Go语言中&#xff0c;包是代码的基本组织单位。…...

【Leecode】Leecode刷题之路第35天之搜索插入位置

题目出处 35-搜索插入位置-题目出处 题目描述 个人解法 思路&#xff1a; 1.依次遍历数组&#xff0c;看目标值是否在数组中 2.如果不在&#xff0c;将目标值插入数组&#xff08;涉及到数组移动、扩容&#xff09;&#xff0c;返回下标代码示例&#xff1a;&#xff08;Java…...

速盾:海外cdn高防

随着互联网的快速发展&#xff0c;网站的安全性和稳定性变得越来越重要。尤其是对于大型企业和电商平台来说&#xff0c;保护用户数据和维护网站稳定运行是至关重要的。为了应对日益增长的网络攻击和恶意访问&#xff0c;海外CDN高防服务成为了一种非常受欢迎的解决方案。 首先…...

图书管理系统(JDBC)

AdminUser是管理员类 NormalUser是用户类 AddOperation是增加图书类 BorrowOperation是借书类 DelOperation是删除图书类 ExitOperation是退出类 FindOperation是查找图书类 IOPeration是接口 ReturnOperation是还书类 ShowOperation是显示所有图书类 注意&#xff1a…...

模板初阶及STL简介

目录 一.模板初阶 1.泛型函数 2.函数模板 1.函数模板概念 2.函数模板使用格式 3.函数模板的原理 4.函数模板的实例化 5.模板参数的匹配原则 3.类模板 1.类模板的定义格式 2.类模板的实例化 二.STL简介 1.什么是STL 2.STL的版本 3.STL的六大组件 4.如何学习STL …...

UE5 不同的编译模式下,module的组织形式

由于最近在琢磨UE5.4这个引擎&#xff0c;在学习过程中&#xff0c;碰到了一些非常有意思的事情&#xff0c;我在尝试把之前写的一些底层库搬到UE里面&#xff0c;比如底层库&#xff0c;网络库等等&#xff0c;我通过建立module&#xff0c;将这些库用源代码的方式整合进了UE5…...

【ms-swift 大模型微调实战】

安装环境 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip install modelscope vllm ‘ms-swift[llm]’ -U 下载模型 modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir ./Qwen2.5-7B-Instruct 微调 实验环境&#xff1a;…...

为什么选择Titanium SDK?5大优势让你告别原生开发复杂性

为什么选择Titanium SDK&#xff1f;5大优势让你告别原生开发复杂性 【免费下载链接】titanium-sdk &#x1f680; Native iOS and Android Apps with JavaScript 项目地址: https://gitcode.com/gh_mirrors/ti/titanium-sdk 在移动应用开发领域&#xff0c;Titanium SD…...

从零搭建AI开发环境:Python 3.10.11、CUDA 12.1与PyTorch一站式配置指南

1. 环境准备&#xff1a;从零开始的硬件与软件检查 在开始搭建AI开发环境之前&#xff0c;我们需要确保硬件和基础软件都满足要求。我遇到过很多新手朋友因为忽略了这个步骤&#xff0c;导致后续安装过程频频出错。首先确认你的电脑配备了NVIDIA显卡&#xff0c;这是使用CUDA加…...

DDPM实战:从零构建图像生成模型

1. DDPM基础概念与核心原理 扩散模型&#xff08;Denoising Diffusion Probabilistic Models&#xff0c;简称DDPM&#xff09;是近年来计算机视觉领域的一项突破性技术。我第一次接触这个概念时&#xff0c;被它优雅的数学推导和惊人的生成效果所震撼。简单来说&#xff0c;D…...

2026年远程真机测试平台选型对比与体验解析

手机远控多平台操作对比&#xff1a;轻量操控更省心 日常做移动端真机测试时&#xff0c;常遇到手边没带设备、出差在外却要紧急复现兼容性或性能问题的尴尬。一次偶然机会接触到优测云真机&#xff0c;发现它把手机控制电脑、远程调用真机的体验做到了贴近现场操作的顺畅度。无…...

AMD新平台装CentOS7.9总报Kernel Panic?别折腾了,试试Rocky Linux 9.2吧

AMD新平台安装CentOS7.9遭遇Kernel Panic&#xff1f;Rocky Linux 9.2的完美替代方案 最近几年&#xff0c;AMD的Zen3架构处理器凭借出色的性能和能效比&#xff0c;赢得了大量开发者和技术爱好者的青睐。然而&#xff0c;当这些用户尝试在Ryzen 5000系列平台上安装某些较旧的L…...

Lepton AI农业监测:作物生长分析服务构建实践

Lepton AI农业监测&#xff1a;作物生长分析服务构建实践 【免费下载链接】leptonai A Pythonic framework to simplify AI service building 项目地址: https://gitcode.com/gh_mirrors/le/leptonai Lepton AI是一个Pythonic框架&#xff0c;专为简化AI服务构建而设计&…...

探索ai辅助开发新范式:在快马平台打造深度集成codex的智能编程助手

最近在尝试AI辅助开发时&#xff0c;发现InsCode(快马)平台的深度集成功能特别适合探索Codex这类智能编程助手的潜力。通过实际体验&#xff0c;总结了一套将AI能力融入完整开发流程的方法&#xff0c;分享几个关键发现&#xff1a; 智能补全的上下文感知 传统代码补全往往局限…...

实战指南:基于快马AI构建可部署的z-library全栈应用

实战指南&#xff1a;基于快马AI构建可部署的z-library全栈应用 最近在尝试搭建一个电子图书馆应用&#xff0c;类似z-library的功能。这个项目涉及用户系统、支付、推荐等多个模块&#xff0c;对于个人开发者来说确实有点复杂。不过我发现使用InsCode(快马)平台可以大大简化开…...

信创迁移踩坑记:从CentOS 7换到TencentOS 3.3,你的程序为啥报‘时间倒流’错误?

信创迁移实战&#xff1a;从CentOS 7到TencentOS 3.3的时间同步陷阱与深度修复指南 当企业技术栈从CentOS向国产化操作系统迁移时&#xff0c;时间同步问题往往是最容易被忽视却影响最深远的"暗礁"。最近遇到一个典型案例&#xff1a;某金融客户将核心交易系统从Cent…...

BilibiliDown新手入门指南:如何轻松下载B站视频资源

BilibiliDown新手入门指南&#xff1a;如何轻松下载B站视频资源 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/…...