网站链接:aHR0cHM6Ly93d3cuam9ib25saW5lLmNuLw==(atob解码)
覆盖网站碰到一个就业在线的网站,看了下里面职位信息都挺全的,应该是从各大平台拿的。
接口校验参数:businessData,E-SIGN,E-CONTENT-PATH
首先显而易见的是businessData这个参数的校验,长度为128位,作post请求时需要带上,最开始是直接抠代码还原sm4算法,后来发现还有后面两个参数去校验,实在懒得继续再扣了,就直接copy整个js打包文件,在浏览器上跑一遍试试。
发现导出函数就直接能跑了,但不确定有没有环境校验。放在node里试一试发现有报错,我们可以把环境校验想象成一种hook方法,把我们要的值hook成未定义或者作了判断导致是赋值成不同于浏览器的值了。
需要注意的点是,有许多三元表达式 要理解如 boolen?expression1:expression2
校验的环境不多,有window、self、globalThis等
补充一点,在将打包器导出到全局后,在调用加密函数的同时,能够对传进去的函数值进行插桩,将过程中用到的函数名log以后,删去不必要的代码,这样可以一定程度提高js文件的运算速度。webpack此类场景和jsvmp有相似之处。