目标网站:http://shanzhi.spbeen.com/login/
需求:找到密码加密的过程,进行加密
案例分析
1、多输入几次错误的密码,查看哪些字段是加密的。
2、如何没有 Search 到相关的字段,可以在 JS 里面找一找。
3、如果看到 JS 文件里面有 eval(包裹的 js 代码),这种一般是对 JS 文件进行了加密,可以把代码复制到解密网站解密。
将代码整个复制到文本区域内后,点击“解码”,将解码后的代码复制到新建的 JS 文件中。
function doLogin() {
var password_old = $("#MemberPassword").val();
var encrypt = new JSEncrypt();
var public_key = $("#pk").val();
encrypt.setPublicKey(public_key);
var pass_new = encrypt.encrypt(password_old);
$("#MemberPassword").val(pass_new);
$("#login_button").submit()
}
4、分析发现 $("#MemberPassword").val()
是输入的密码,所以可以直接把这部分换成密码后运行代码。
function doLogin() {
var password_old = '123456';
var encrypt = new JSEncrypt();
var public_key = $("#pk").val();
encrypt.setPublicKey(public_key);
var pass_new = encrypt.encrypt(password_old);
$("#MemberPassword").val(pass_new);
$("#login_button").submit()
}
console.log(doLogin())
5、运行后报错。
var encrypt = new JSEncrypt();
^
ReferenceError: JSEncrypt is not defined
6、这个可以直接安装模块,在文件所在文件夹的地址栏输入 cmd 后回车,输入命令 cnpm install node-jsencrypt 安装模块,安装模块后导入模块。
const JSEncrypt = require('node-jsencrypt')
function doLogin() {
var password_old = '123456';
var encrypt = new JSEncrypt();
var public_key = $("#pk").val();
encrypt.setPublicKey(public_key);
var pass_new = encrypt.encrypt(password_old);
$("#MemberPassword").val(pass_new);
$("#login_button").submit()
}
console.log(doLogin())
7、这里面的 public_key 是公钥,可以在网页源码中找到。
const JSEncrypt = require('node-jsencrypt')
function doLogin() {
var password_old = '123456';
var encrypt = new JSEncrypt();
var public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaP+rYm6rqTMP565UmMU6YXq46KtAN3zwDSO8LNa15p0lJfsaY8jXY7iLsZqQZrGYr2Aayp6hYZy+Q+AMB/VUiSpD9ojPyOQ7r9jsf9jZbTOL4kj6iLZn37fEhp4eLvRgy5EJCyQoFyLCsgLechBTlYl2eA95C3j4ZUFhiV6WFHQIDAQAB';
encrypt.setPublicKey(public_key);
var pass_new = encrypt.encrypt(password_old);
$("#MemberPassword").val(pass_new);
$("#login_button").submit()
}
console.log(doLogin())
8、返回一下加密后的密码。
const JSEncrypt = require('node-jsencrypt')
function doLogin() {
var password_old = '123456';
var encrypt = new JSEncrypt();
var public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaP+rYm6rqTMP565UmMU6YXq46KtAN3zwDSO8LNa15p0lJfsaY8jXY7iLsZqQZrGYr2Aayp6hYZy+Q+AMB/VUiSpD9ojPyOQ7r9jsf9jZbTOL4kj6iLZn37fEhp4eLvRgy5EJCyQoFyLCsgLechBTlYl2eA95C3j4ZUFhiV6WFHQIDAQAB';
encrypt.setPublicKey(public_key);
var pass_new = encrypt.encrypt(password_old);
return pass_new
// $("#MemberPassword").val(pass_new);
// $("#login_button").submit()
}
console.log(doLogin())
运行结果:
YUhGv7Ja7VNJDkAjLRmwTa2YYfcZvabqvBuvN04y7RgjVs2Y5xXgsyGvnj9+UwGvyY/n0Q5nb1ZVov0gtNTDg7hek3Xbv3Q3segAdY+klsdJDoAipv7v6KWAp0xmPKLMlUv94vPWljAft+Mlhzfz0XXm3QMM7hsC43OxVOA1qsA=
过无限 debug
记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~