某房与某二手房JS加密分析

房天下

目标地址:aHR0cHM6Ly9wYXNzcG9ydC5mYW5nLmNvbS8=

抓波包直接,运气好的话直接看到RSA这个JS文件
RSA.png

那么很明显了,直接全局搜RSA相关字段。
这里是公钥
pubkey.png

RSA初始化部分
RSA初始化部分.png
直接在这里下断点,再次请求,根据调用堆栈找到加密位置
加密位置.png
整个加密过程比较简单,然后就是扣RSA.min.js文件地代码了,扣出来稍微改改就行了。

上一波结果:
success.png

乐居

目标地址:aHR0cHM6Ly9teS5sZWp1LmNvbS93ZWIvc3NvL2xvZ2ludmlldw==

抓登陆包
抓包.png
如果有一定经验的话,可以猜到这两段有可能是base64编码过的,可以尝试直接搜base64相关字段。没猜到也没关系,直接搜oldPwd参数,只有一个位置。
oldPwd.png
这里已经加密过了,根据调用堆栈,定位到实际加密位置
encrypt.png
像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接口,返回密码正确,继续抓波登录接口

login.png

多了一个key参数,看起来也像是同样的加密,然后搜key字段(大小写匹配),能搜到几个结果,下断点,发现确实加密了,但提交的不是这个key,调用堆栈也没法定位。
最后花了点时间,发现这个是卸载html中的,直接解析dom就可以获取了。在这里花了这么多时间,其实可以直接搜key的值,全局只会有一个结果。

key.png

登录结果返回的是html就不贴图了。

代码:Github

Q.E.D.


一切很好,不缺烦恼。