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

猿人学js逆向比赛第一届第二十题

分析请求

image-20250712084727685

通过堆栈可以快速定位到这里,,那么sign,就是调用的sign函数生成的了。

image-20250712084845620

通过在控制他输出sign快速定位到这个函数,在这里下个断点调试看一下。

image-20250712085033915

跟到这里了,并没有看到有什么疑似密文的产生,那么大概率就是在这个函数中做的了,那么在跟到这个函数里面看一下。很明显看到了wasm的特点,那么接下来就是分析这个wsam是在哪里加载的。

image-20250712085202840

二、分析wasm

image-20250712085728494

通过关键字定位,我定位到了这里进行的赋值操作,同时看到了webpack3的特征值,那么这里就可以推测这实际上是一个webpack3打包的加载wasm的代码。

image-20250712085928864

这里通过定位加载器,也是顺利找到了wasm加载的位置。那么这里只需导出这个importObject到本地就行了。

image-20250712090112681

这里通过这个importObject也是定位到了这里,但是可以看到这里的对象里面每个key所对应的value实际上并不是真正的函数体,那么这里全局搜索关键字看一下能不能搜到,实际上就是本节一张图中的位置。

image-20250712183856679

那么这里直接将函数拿下来,然后这样导入这些函数到这个对象中。

image-20250712184013773

直接运行发现报错Window未定义,那么这里上代理补环境是不是就行了。最终补的环境如下:

window = global;Window = function (){};
window.__proto__ = Window.prototype;window.top = window;
window.self = window;document = {body:{},
};

剩下就是传入相同参数和浏览器对比一下得到的结果是否一致。

image-20250712184604893

可以看到得到的结果是一致的,那么封装发送请求,最终成功出值。

image-20250712185041659

三、分析wasm(2)

本节为记录另一种分析wasm的方式,通过追到这个函数里面,在这里分析sign的生成。

image-20250712194525118

这里传入的是两个地址,一个长度,那么在内存中对应的是什么呢?

image-20250712194401033

第二个参数就是传进来的这个content的在内存中的起始地址,第一参数现在所对应的地址是空的,那么继续向下跟。

image-20250712195046516

这里跟到了有一个sign的函数调用,同时穿的参数还是刚开始掉本自己的这三个参数,那么追进去看一下。

image-20250712195549186

最终定位到这里,那么在后面拼接了一个D#uqGdcw41pWeNXm,然后进行了hash,然后再往下就没有看到别的什么意思加密算法的了。

String.fromCharCode.apply(null,new Uint8Array(memories[0].buffer.slice(1114192,1114192+31)))  // 通过这种方式将内存中字符串提取出来

那这里将字符串拼接后的字符串进行hash,看一下得到的结果是否就是sign这个参数

image-20250712200458276

image-20250712200509539

发现是一样的,现在就多次测试,最终确定实际上就是在传入的字符串后面添加了那个盐值,然后进行的md5。再次请求测试,可以看到是没问题的。

oXM1-1752322205403)]

发现是一样的,现在就多次测试,最终确定实际上就是在传入的字符串后面添加了那个盐值,然后进行的md5。再次请求测试,可以看到是没问题的。

http://www.lryc.cn/news/585910.html

相关文章:

  • Linux进程的生命周期:状态定义、转换与特殊场景
  • 杭州乐湾科技有限公司的背景、产品体系与技术能力的全方位深度分析
  • linux_线程概念
  • 车载操作系统 --- Linux实时化与硬实时RTOS综述
  • windows电脑远程win系统服务器上的wsl2
  • 部署Harbor私有仓库
  • 服务器怎么跑Python项目?
  • vite如何生成gzip,并在服务器上如何设置开启
  • 自动化证书续签工具针对VPS服务器HTTPS服务的维护实践
  • Python技巧记录
  • 浅谈npm,cnpm,pnpm,npx,nvm,yarn之间的区别
  • 【云端深度学习训练与部署平台】AutoDL连接VSCode运行深度学习项目的全流程
  • Go语言中的Options模式
  • Mac M芯片安装RocketMQ服务
  • tp8.0\jwt接口安全验证
  • 深入解析 LinkedList
  • 在 Android 库模块(AAR)中,BuildConfig 默认不会自动生成 VERSION_CODE 和 VERSION_NAME 字段
  • 手机识别数据集,2628张原始图片,支持yolo,coco json,pasical voc xml等格式的标注
  • 搭建云手机教程
  • 深大计算机游戏开发实验三
  • Apache HTTP Server 从安装到配置
  • 实习内容总结
  • javaEE——synchronized关键字
  • docker 443错误 lookup docker.mirrors.ustc.edu.cn: no such host
  • Vue Vue-route (5)
  • 【C#】GraphicsPath的用法
  • Vscode中使用C++代码进行debug
  • 阿里云服务器安装JDK21
  • WildCard野卡已跑路(包含gpt plus升级方案)
  • 2025.7.12总结