滑块的入门案例+登录实现

声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究

案例分析

目标案例:aHR0cDovL2JhY2t0ZXN0LjEwanFrYS5jb20uY24vYmFja3Rlc3QvYXBwLmh0bWwjL215c3RyYXRlZ3k=

1.对应参数和接口
滑块接口
在这里插入图片描述
滑块处理完之后的接口
在这里插入图片描述
加滑块提交的接口
在这里插入图片描述

参数分享

首先我们来查看那个只有一个参数的接口,老规矩上搜索大法
在这里插入图片描述
通过点击登录之后发现到这里已经生成了,那么我们往上看可以看到thsencrypt.encode是对我们输入的东西进行的加密
在这里插入图片描述
这里可以看到他是对账号进行了rsa加密, rsa的key是那个b长度是c,之后在进行了hex2b64, hex2b64我是直接扣下来的,这玩意可以看下自己还原下
在这里插入图片描述
可以看到这里就已经对上了,到这里第一个参数就已经搞定了,那么我们继续往下看
在这里插入图片描述
那么我们来看第二个接口,还是搜索大法下断点
在这里插入图片描述
这里可以看到,密码是对我们输入的密码进行了md5然后在进行了rsa之后进行hex2b64
在这里插入图片描述
这里可以看到它是对密码和账号进行的加密
在这里插入图片描述
我们往下跟可以看到通过对之前返回的数据和入参进行了sha256,可通过python还原
在这里插入图片描述
这里可以看到是对第一次返回的数据进行了base64解码后进行的getStrXOR,这个我是扣下来的
在这里插入图片描述
通过对n值和密码的md5和dsv的sha256进行的sha256加密在进行getStrXOR最后在进行编码然后在走一边thsencrypt.encode,嵌套的加密有点多哈
在这里插入图片描述
到这里基本所有的加密都已经搞定了,那么我们来看滑块、第一次是请求缺口,第二次是校验,入参都是在请求滑块接口里面可以找到,那么我们来看phrase就行
在这里插入图片描述
这里可以看到,没什么加密哈
在这里插入图片描述
难点就到这里就全部结束了,在dologinreturnjson2里面的入参讲解
在这里插入图片描述
Hexin-V有点小坑如果不带上它你登录请求不到,通过分析发现他是cookie中的值
在这里插入图片描述
通过hook技术可以看到
在这里插入图片描述
可自行分析下,进行寻找
在这里插入图片描述

本期滑块和登录结合的入门案例到这里就结束了,我们下期见!!!
拜拜!!!
在这里插入图片描述

效果展示

在这里插入图片描述

部分js代码分享

const crypto = require('crypto');
const md5 = require('md5');

var b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  , b64padchar = "=";
function hex2b64(b) {
    
    
    var a, c, d = "";
    for (a = 0; a + 3 <= b.length; a += 3)
        c = parseInt(b.substring(a, a + 3), 16),
        d += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
    a + 1 == b.length ? (c = parseInt(b.substring(a, a + 1), 16),
    d += b64map.charAt(c << 2)) : a + 2 == b.length && (c = parseInt(b.substring(a, a + 2), 16),
    d += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4));
    for (; 0 < (d.length & 3); )
        d += b64padchar;
    return d
}

function getStrXOR(e, t) {
    
    
    for (var n, s = e.length, r = t.length, o = "", d = 0; d < s; d++)
        n = d % r,
            o += String.fromCharCode(e.charCodeAt(d) ^ t.charCodeAt(n));
    return o
}

function hmac_(keys, values) {
    
    
    const hmac = crypto.createHmac('sha256', keys);
    hmac.update(values);
    return hmac.digest('hex')
}


function encodeDataSaltOnce(e, t, n, ssv, dsv) {
    
    
    n = getStrXOR(atob(ssv), n).toString();
    n.split("$")[1];
    n = n.split("=")[1];
    n = getStrXOR(hmac_(n.toString(), md5(e).toString()), dsv);
    return btoa(n);
}

console.log(encodeDataSaltOnce('1231', "12312312343", 'ed32b85f205edd7090065e2012537c484d1a90d65a702f1011853e0deb69eb71', "QQxeUwEVXQdBWAdQUkBcVUANZ2VDE2ZgUl55fn0zZWBNCHI3V2g", "ee690f22f66d7666de70f45158c0997452bf9bdbd0d1137d78d4ca1bda2224bd"))

猜你喜欢

转载自blog.csdn.net/w62181310/article/details/131521361
今日推荐