【JS逆向系列】某海关公示平台分析

2023-10-12 17:30

本文主要是介绍【JS逆向系列】某海关公示平台分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【JS逆向系列】某海关公示平台分析

    • 1.样本地址
    • 2.反调试
    • 3.页面分析
    • 4.算法分析

1.样本地址

aHR0cDovL2NyZWRpdC5jdXN0b21zLmdvdi5jbi9jY3Bwd2Vic2VydmVyL3BhZ2VzL2NjcHAvaHRtbC9kZWNsQ29tcGFueS5odG1s

2.反调试

使用无痕窗口,打开f12后打开网页。发现自己在断点处停下了

在这里插入图片描述
在调用堆栈网上找,这种格式的混淆就是使用的ob混淆,首先使用ast把【SwCaHu_p.js】和【menuManger.js】这两个文件进行反混淆。反混淆的方法在前面的AST系列文章有说到,这里就跳过了。

反混淆完成后,使用Fiddler.exe抓包并自动响应这两个js文件,再尝试打开网页。

在这里插入图片描述

3.页面分析

反混淆之后就不会出现无限debugger的情况了,但是这时出现了滑块。先在网页手动滑一次

在这里插入图片描述

滑块通过的话,code为0,这时得到【csessionid】和【value】。那这两个值进行下一步接口请求,正常情况下会有一个307的响应,这时会得到一个【acw_sc__v3】的cookie值,此时再请求接口,就可以得到加密的数据

在这里插入图片描述

通过调用堆栈,找到请求成功时的回调函数,并设断点,然后刷新

在这里插入图片描述

在这里插入图片描述
往下调试可以看到,通过loadAESDecryptStr方法后,就可以得到明文,跟入这个方法

在这里插入图片描述
最后是调用的MuData_KXC方法

在这里插入图片描述

4.算法分析

看到这里有isPadding、mode、sk。猜测是sm4算法,并且存在一句【_0x3ca6b6[‘sk’] = _0x3ca6b6[‘sk’]“reverse”】。这是密钥轮换后,在解密是需要对密钥得到的sk进行反转,那就可以确定,CaData_KXC是sm4加密函数,MuData_KXC是sm4解密函数。

但是使用标准sm4进行解密,发现解密得到的是一堆乱码。仔细查看代码,发现进行了一些魔改,包括初始化数值和算法细节

在这里插入图片描述
复制gmssl库中的sm4代码,并且按照js的代码进行魔改

在这里插入图片描述
在这里插入图片描述
最后尝试进行解密,可以解出明文了

在这里插入图片描述

这篇关于【JS逆向系列】某海关公示平台分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197337

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入