记录一次js逆向某医保平台的过程

一、确定需要的数据,找到api接口地址

需要获取到在医保目录中的药品信息,访问地址

药品信息

打开开发者工具,刷新页面,查看XHR请求数据。

发现api接口地址:https://fuwu.nhsa.gov.cn/ebus/fuwu/api/nthl/api/CommQuery/queryWmTcmpatInfoBFromEs

请求数据和响应数据都是加密的。

image-20240805123620207

二、搜索关键字,找到加密js代码位置

1、分析请求体数据

可以通过apifox模拟发送请求,然后修改请求字段,看是否能成功获取响应,进而得到服务器需要校验参数。

请求的body被加密成encData,同时校验signData才能成功请求。

image-20240805123958936

2、打个xhr断点,搜索关键字encData

找到类似赋值的代码,打上断点,重新调试。

image-20240805124903435

请求body藏在变量e中,往上找,发现singData的赋值代码,都放在function f(t) 这个函数中

image-20240805125052666

image-20240805125358732

这个函数又是在7d92这个模块中

image-20240805125553309

三、扣加密模块,补全js环境

1、找到webpack的触发器

拉到js代码的最开始的位置,将触发器的代码扣下来,自己重新构建一个触发器,然后将7d92 模块的代码放进去,函数o就是触发器。

image-20240805130108022

重写一个js模拟实现上面的功能

image-20240805130723513

2、补全js代码

在控制台打印下t,发现具体传入的数据格式是一个字典对象。

image-20240805131040314

构建一个假数据传入到,刚才新定义的data_encrypt中,data_encrypt.a方法是加密,data_encrypt.b方法是解密,假数据的数据结构如下:

image-20240805131714671

然后运行,看报错,缺啥模块补啥模块就行了。


记录一次js逆向某医保平台的过程
https://szsc.asia/2024/08/02/ji-lu-yi-ci-js-ni-xiang-mou-yi-bao-ping-tai-de-guo-cheng/
Author
AW
Posted on
2024年8月2日
Licensed under