记录一次js逆向某医保平台的过程
一、确定需要的数据,找到api接口地址
需要获取到在医保目录中的药品信息,访问地址
打开开发者工具,刷新页面,查看XHR请求数据。
发现api接口地址:https://fuwu.nhsa.gov.cn/ebus/fuwu/api/nthl/api/CommQuery/queryWmTcmpatInfoBFromEs
请求数据和响应数据都是加密的。
二、搜索关键字,找到加密js代码位置
1、分析请求体数据
可以通过apifox
模拟发送请求,然后修改请求字段,看是否能成功获取响应,进而得到服务器需要校验参数。
请求的body被加密成encData
,同时校验signData
才能成功请求。
2、打个xhr断点,搜索关键字encData
找到类似赋值的代码,打上断点,重新调试。
请求body藏在变量e
中,往上找,发现singData
的赋值代码,都放在function f(t)
这个函数中
这个函数又是在7d92
这个模块中
三、扣加密模块,补全js环境
1、找到webpack的触发器
拉到js代码的最开始的位置,将触发器的代码扣下来,自己重新构建一个触发器,然后将7d92
模块的代码放进去,函数o
就是触发器。
重写一个js模拟实现上面的功能
2、补全js代码
在控制台打印下t
,发现具体传入的数据格式是一个字典对象。
构建一个假数据传入到,刚才新定义的data_encrypt
中,data_encrypt.a
方法是加密,data_encrypt.b
方法是解密,假数据的数据结构如下:
然后运行,看报错,缺啥模块补啥模块就行了。
记录一次js逆向某医保平台的过程
https://szsc.asia/2024/08/02/ji-lu-yi-ci-js-ni-xiang-mou-yi-bao-ping-tai-de-guo-cheng/