某房与某二手房JS加密分析
房天下
目标地址:aHR0cHM6Ly9wYXNzcG9ydC5mYW5nLmNvbS8=
抓波包直接,运气好的话直接看到RSA这个JS文件
那么很明显了,直接全局搜RSA相关字段。
这里是公钥
RSA初始化部分
直接在这里下断点,再次请求,根据调用堆栈找到加密位置
整个加密过程比较简单,然后就是扣RSA.min.js文件地代码了,扣出来稍微改改就行了。
上一波结果:
乐居
目标地址:aHR0cHM6Ly9teS5sZWp1LmNvbS93ZWIvc3NvL2xvZ2ludmlldw==
抓登陆包
如果有一定经验的话,可以猜到这两段有可能是base64编码过的,可以尝试直接搜base64相关字段。没猜到也没关系,直接搜oldPwd参数,只有一个位置。
这里已经加密过了,根据调用堆栈,定位到实际加密位置
像secret、encrypt、descrypt、sign等都是很敏感的字眼,这里secretMethod就是加密位置。
非常简单的一个加密,直接用Python写出来,JS都不用扣。
def encrypt(msg: str) -> str:
h = hashlib.md5(msg.encode()).hexdigest()
return base64.b64encode((h[0:8] + base64.b64encode(msg.encode()).decode() +
h[10: 14]).encode()).decode()
测试一波checkPwd接口,返回密码正确,继续抓波登录接口
多了一个key参数,看起来也像是同样的加密,然后搜key字段(大小写匹配),能搜到几个结果,下断点,发现确实加密了,但提交的不是这个key,调用堆栈也没法定位。
最后花了点时间,发现这个是卸载html中的,直接解析dom就可以获取了。在这里花了这么多时间,其实可以直接搜key的值,全局只会有一个结果。
登录结果返回的是html就不贴图了。
代码:Github
Q.E.D.