当前位置: 首页 > 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.xdnf.cn/news/1112617.html

相关文章:

  • 程序在计算机中如何运行?——写给编程初学者的指南
  • 咨询导览,AI发展趋势
  • C语言中整数编码方式(原码、反码、补码)
  • Gitee Push 失败 7 日谈:每天一个踩坑故事
  • 【InnoDB磁盘结构1】系统表空间,独立表空间,双写缓冲区
  • C语言基础知识--联合体
  • ICCV2025 特征点检测 图像匹配 RIPE
  • 缺陷特征粘贴增强流程
  • 过拟合 跷跷板 幻觉 混合精度
  • 学习笔记 Datewhale MCP Server Task2
  • Windows安装SSH
  • 【Java入门到精通】(二)Java基础语法(上)
  • [ABC267F] Exactly K Steps
  • 零基础 “入坑” Java--- 九、类和对象(二)
  • 车载操作系统 --- Linux实时化与硬实时RTOS综述
  • 数据结构——散列表
  • 【PTA数据结构 | C语言版】用两个栈实现队列
  • 【GESP】C++ 2025年6月一级考试-客观题真题解析
  • MoE(混合专家模型):大模型时代的“模块化超级大脑”——从原理到实战的深度革命
  • 初识JDBC
  • GPU编程入门:CUDA与OpenCL全面解析
  • C语言基础知识--动态内存管理
  • 【时间之外】AI在农机配件设计场景的应用
  • bp使用爆破模块破解pikachu的登陆密码
  • java堆的创建与基础代码解析(图文)
  • BKD 树(Block KD-Tree)Lucene
  • TCP与UDP协议详解:网络世界的可靠信使与高速快递
  • UnityShader——SSAO
  • 微信小程序121~130
  • 时序分解 | Matlab基于GWO-FMD基于灰狼算法优化特征模态分解-2025-7-12