Crack Slide | X 科网站的登录滑块逆向分析(读者投稿)

今日网站

aHR0cHM6Ly9pLmZrdy5jb20v

本篇文章来自第 3 交流群,NTrach 的投稿~

以下为分析正文

正文

大家好,我是 NTrach,今天给大家带来的是一个网站的滑块验证,加密比较简单,算是抛砖引玉,话不多说直接开干!

抓包分析

输入账号密码,点击登录出现滑块,分析一下请求流程,就是get这个包

点进去看一下发送的参数

有一个bssbsskey两个参数,这两个参数怎么来的呢?

先用全局搜索一下

发现了一个惊喜,bsskey是在主页面给我们的,那我们可以通过正则直接提取出来;

发送请求成功后,会给我们返回下面的数据

其中imgID是背景图片的base64数据,sliderid是滑块图片的base64数据,获取这两个数据转换一下就能得到我们的图片了

逆向分析

滑动之后发现出现了validate的包,这个就是提交验证的包了

参数多了一个vi,那我们直接搜vi这个参数

定位到下图这里,再次发送请求,观察断下来的数据

这样可以分析

e是一个对象,里面有很多的数据

最主要的我们看的是vi的值,vi是将一个对象转成字符串,然后通过N进行加密,这个对象中s的值是10l的值是t也就是缺口的坐标

“悄悄 BB 一句除了 l 的值和 validateSign 的值,其他的都可以写为定值

我们直接就可以分析这个N方法了,跟进去看看

一看这个N方法就是简单的换位操作,那就简单了直接扣下来,再补充一个K的值,运行一下

代码语言:javascript
复制

K = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
function N(e) {
    for (var t, n, i = String(e), o = 0, a = K, r = ""; i.charAt(0 | o) || (a = "=",
    o % 1); r += a.charAt(63 & t >> 8 - o % 1 * 8)) {
        if ((n = i.charCodeAt(o += .75)) > 255)
            throw new L("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
        t = t << 8 | n
    }
    return r
}

运行结果如下

整个逻辑就可以还原出来了

这个是属于比较简单的滑块,像识别缺口的方法大家自行百度,网上一搜一大把~

完结撒花~

好了,以上就是今天的全部内容了。

我是没有更新就在摸鱼的咸鱼

收到请回复~

我们下次再见。