js加密的爆破方式

之前在工作中,碰到很多利用js加密的密码,然后没有验证码,我们就可以想个办法来进行加密后发包,就可以达到爆破的效果。

有几种方式是可以进行操作的:

  • 破解加密算法,逆向一个
  • 模拟加密算法自己写一个
  • 调用加密js文件

前两个有点难,而且有点麻烦,并且没有规律性,就不看了,只看最后一个。

利用nodejs来调用加密js文件,网上都写的很详细,直接粘代码记录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var http = require('http');  
var url = require('url');
var rsa = require('./rsa2');

function enc(pass) {
var rsapubkey="-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5FvP6Z/qKeOScNctnEb59A1gvRx5AZJytri9UW3ggf1fYhjZ+I8y0dwh25V45GxfbIxfNwIaYRI0vb1NpUhCUi5gry65hNkVegQh8wT0p8+vAq8JBxEKG98m/ZuVy/+jtLkH7EPtXYxz3LJrULsS8gwb4pJ9HC+DgTbUMTc17KwIDAQAB-----END PUBLIC KEY-----";
var enc = rsa(rsapubkey, pass);
return enc
}

http.createServer(function (request, response) {
var q =url.parse(request.url,true)
var pass = q.query.pass
var pass= String(pass)
response.writeHead(200, {'Content-Type': 'text/plain'});
var data = JSON.stringify(enc(pass))
response.end(data);
}).listen(8881);

console.log('Server running at http://127.0.0.1:8881/');

这样就是起了一个web服务,然后我们在发包的代码中直接调用就行了。
我们还是要能看懂些加密过程,然后利用nodejs包含进来。
比如说网站js加密的函数是这么写的。

1
2
3
4
function  any_rsa_pass(pubkey,pass){
var key = RSA.getPublicKey(pubkey);
return RSA.encrypt(pass, key);
}

那么我们就在该js文件下加入

1
module.exports = any_rsa_pass;

然后写个python,调用该js文件,发包爆破就可以了。
ps: 调试js,下载一个supervisor