爬虫 — Js 逆向案例五闪职网登录

目标网站:http://shanzhi.spbeen.com/login/

需求:找到密码加密的过程,进行加密

案例分析

1、多输入几次错误的密码,查看哪些字段是加密的。

爬虫 — Js 逆向案例五闪职网登录_第1张图片

2、如何没有 Search 到相关的字段,可以在 JS 里面找一找。

爬虫 — Js 逆向案例五闪职网登录_第2张图片

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

爬虫 — Js 逆向案例五闪职网登录_第3张图片

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

你可能感兴趣的:(爬虫,爬虫,python,javascript)