一、输入账号密码
账号:15836353612
密码:123456
二、F12打开开发者工具,抓包分析,password被加密提交了
三、全局搜索password,定位到关键JS文件,下断调试
四、断下来后,查看formDate的值,正好是POST提交的数据,只是此时的password还没有加密
五、encryptedString(key, formData[i].value),这个是密码加密后的值,赋值给了password
六、通过new RSAKeyPair("10001", '', rsa_n),判断该加密应该是RSA加密
七、代码实现
1、基础代码
function aiyou(pwd){
var a='DC1683EEAA2B709F97743773E18F53E3C9A15D12465CE82227A6E447E6EC590D0B569876BB631B0AB4D67881E7EC874066D6E022E2978B4C6EAA8903EC1774AAE040A3BEAF9C2B48730ADD46BEF5F0C8109DB6FCEFED0F4A84CCD7AFFDB4FB4214DA0D0FF1A8E2831E81FA4D7C2F4346184EEC87CE42230FC320B2B4E392ECDF'
var key = new RSAKeyPair("10001", '', a);
var value = encryptedString(key, pwd);
return value
}
2、查找encryptedString函数所在js文件,将JS代码全部复制过来
3、加载代码,缺少biFromHex函数,查找该函数所在js文件,将JS代码全部复制
4、重新加载代码,缺少BarrettMu函数,查找该函数所在js文件,全部复制
5、重新加载代码,没有报错,双击要调用的函数,点击运行,会发现程序卡死了。
6、重新分析关键代码处,发现setMaxDigits函数,我们重新调用一下
7、关键代码如下
function aiyou(pwd){
setMaxDigits(131);
var a='DC1683EEAA2B709F97743773E18F53E3C9A15D12465CE82227A6E447E6EC590D0B569876BB631B0AB4D67881E7EC874066D6E022E2978B4C6EAA8903EC1774AAE040A3BEAF9C2B48730ADD46BEF5F0C8109DB6FCEFED0F4A84CCD7AFFDB4FB4214DA0D0FF1A8E2831E81FA4D7C2F4346184EEC87CE42230FC320B2B4E392ECDF'
var key = new RSAKeyPair("10001", '', a);
var value = encryptedString(key, pwd);
return value
}
8、点击运行,得到最终的运行结果。