JS逆向获取算法 使用算法逻辑进行爆破
前言
爆破的逻辑 : 最简单的就是登录框 不断的试账号密码 这个是无前端加密的情况下
假如我们猜中了 账号密码 admin 123
但是这个时候前端是有加密的 服务器不会识别 admin 123 只会识别他的 算法之后的值
固定的算法如base64等 解决这个和喝水一样但是如果是自己写的算法呢 现在的算法潮流是 SHA-256 是MD5的延伸但是这章我们不学习这个
使用算法逻辑进行爆破
使用算法之前我们需要进行寻找算法所在的js文件然后调试 看看能否运行
获取:交我算平台
(上个文章有获取的方法)
发现点直接断点不多 bb
捕捉到了信息
但是我们真正需要的是加密的文件 .js 就是 他上面 new的这个库
点击 右键 下载到桌面
使用 VS打开的同时我们把 这个网站的算法调用 复制一下
把 o替换为实际的私钥 r.set是创建公钥
替换一下加密的逻辑
var r = new JSEncrypt, o ='305c300d06092a864886f70d0101010500034b003048024100959684a0076fd2a8fc1589469cf8c95f16ef67490c519f4d274373f29cee64cf6a0db8ad8953122c5b3664e4a48acd34d9b95c0ae62a31be612632e1c49154db0203010001';
r.setPublicKey(o);
var s = r.encrypt('xiaodi');
console.log(s);
这个是代码文件
最后是可以直接运行成功的 那就说明我们拿到了这个算法的文件
接下来就是进行爆破
前提条件:
先配置环境变量
根据在环境变量系统的Path进行配置
cmd中输入 phantomjs 会出现一个尖括号
然后打开burp 导入
这个模块
之后我们就可以进行测试了
先将加密文件.js放到bur插件路径下和那个程序同一个目录 那可能会说了 加环境变量的那个工具有鸡毛用?他是用来生成加密逻辑下的加密数据 然后出现在本地的一个网站端口上 让插件进行测试
进入第三个文件
// 加载实现加密算法的js脚本
var wasSuccessful = phantom.injectJs('JSEncrypt.js'); /*引入实现加密的js文件*/
// 处理函数
function js_encrypt(payload) {
// var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
var r = new JSEncrypt,
o = '305c300d06092a864886f70d0101010500034b003048024100959684a0076fd2a8fc1589469cf8c95f16ef67490c519f4d274373f29cee64cf6a0db8ad8953122c5b3664e4a48acd34d9b95c0ae62a31be612632e1c49154db0203010001';
r.setPublicKey(o);
var newpayload = r.encrypt(payload);
/**********************************************************/
return newpayload;
}
复制上这个测试的url
然后我们去抓个包
进行爆破
还有命令行 别忘了 进行清空一下 开始攻击 :
只有这个样子对方的服务器才能正确的解析 这样才能表示我们的爆破不是无用功 这里是不能爆破成功的 一般这个弱口令在一些刚起步的企业是比较常见的