极验滑块三代第三次w值逆向

        作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

极验滑块(三代)总共需进行三次w参数的扣取,本文来介绍第三次w加密也就是拖动滑动条会发一个ajax.php包携带的w。

一、加密位置定位

        第三次w值的包就是第二次ajax.php这个包,和第一次一样,可以从调用堆栈一步一步跟到加密位置,也可以直接搜索w的unicode编码定位到。最终都会定位到I下面这个混淆的栈。打开后发现和前两次的w加密不在同一个js。因此,为了防止变量污染,建议重新建一个文件用来扣这次的w加密。

二、代码扣取

        直接在上一章定位的加密位置复制主要代码改写。

function third_w(){
    var u = r[$_CAHJS(737)]()
                  , l = V[$_CAHJS(392)](gt[$_CAIAK(254)](o), r[$_CAIAK(744)]())
                  , h = m[$_CAIAK(792)](l)
    return h+u
}

console.log(third_w());

(1)变量u扣取

        第一个变量u不用多说了,和第一次w加密里是一样的,直接跟进去扣出来,同样把te随机变量写死放到外面。

(2)变量l扣取

        和第一次一样先把o写死,r[$_CAIAK(744)]()=te,V函数扣下来。

(3)变量h扣取

        直接把m定义的地方扣下来就可以了。

        剩下的就是重头戏:写死的变量o的扣取了

(4)o变量扣取

        o变量与第二个w里的参数类似,发几次包可以观察出变化的有aa轨迹、userresponse,passtime,rp这四个参数。至于变化的tm各种时间戳,imgload图片加载时间,这些都是服务器没法校验的,不管它,还是写死。

4.1 passtime

        就是拖动滑块所用时间,这个可以从生成的轨迹里提取。

4.2 rp

        rp的赋值就在刚才扣代码的上方, o[$_CAIAK(793)] = X(i[$_CAIAK(122)] + i[$_CAIAK(134)][$_CAIAK(187)](0, 32) + o[$_CAHJS(725)])。和第二次的rp几乎一样,稍微改写扣出X函数就可以了

4.3 userresponse

        往上翻一下找到o定义的地方也就找到了userresponse的加密位置,调用了H函数,补上,传入的是t和challenge两个参数,t是所在函数的参数,往上跟一步不难发现它就是滑块移动的距离。同样可以从滑块轨迹里提出来。

        剩下的就是重头戏中的重头戏aa轨迹加密的扣取

4.4 aa

        不难发现aa=e,e是函数传入的参数,往上跟一步可以找到aa的加密位置。

        aa=l = n[$_DAAAU(985)][$_CJJJU(1075)](n[$_CJJJU(985)][$_CJJJU(1073)](), n[$_CJJJU(67)][$_CJJJU(1033)], n[$_DAAAU(67)][$_CJJJU(345)]);扣下来分析改写a=n[$_DAAAU(985)][$_CJJJU(1075)](n[$_CJJJU(985)][$_CJJJU(1073)](), n[$_CJJJU(67)]['c'], n[$_DAAAU(67)]['s']);一共传入三个参数:

        第二参数是个数组,第三个参数是字符串,其调用的分别是c,s,不难发现就是上个响应体里的c,s。

        第一个参数看起来像是轨迹密文,跟进这个方法首尾赋值语句处下断点看轨迹明文在那里。

        找到l轨迹明文,并且其在W的原型链里,那就把W和其原型链扣下来,把轨迹明文作为参数传入,进行改写,另外鼠标悬停n[$_DAAAU(985)]处发现显示的是W对象,那就一起改写。

        运行发现缺少ct,扣出ct及其原型链定义一起补上。运行出结果,验证后没有问题。

        至此全部参数扣取完毕。

function third_w(i,track) {
    i = {
        gt: "019924a82c70bb123aae90d483087f94",
        challenge: "b3fe414d646fb923ec1701232d0059d87r",
        c: [
            12,
            58,
            98,
            36,
            43,
            95,
            62,
            15,
            12
        ],
        s: "46532a29"

    }
    track=[
    [
        -40,
        -37,
        0
    ],
    [
        0,
        0,
        0
    ],
    [
        3,
        0,
        62
    ],
    [
        7,
        1,
        68
    ],
    [
        11,
        2,
        77
    ],
    [
        18,
        3,
        85
    ],
    [
        26,
        3,
        94
    ],
    [
        30,
        5,
        101
    ],
    [
        36,
        6,
        110
    ],
    [
        40,
        6,
        117
    ],
    [
        44,
        7,
        125
    ],
    [
        48,
        7,
        134
    ],
    [
        53,
        7,
        143
    ],
    [
        58,
        7,
        148
    ],
    [
        61,
        7,
        157
    ],
    [
        64,
        7,
        164
    ],
    [
        65,
        7,
        173
    ],
    [
        64,
        7,
        453
    ],
    [
        63,
        7,
        532
    ],
    [
        63,
        7,
        533
    ]
]
    passtime = track[track.length-1][2]
    distance = track[track.length-1][0]
    aa = W[$_CJFt(236)][$_CJJJU(1075)](W[$_CJFt(236)][$_CJJJU(1073)](track), i['c'], i['s'])

    userresponse = H(distance, i['challenge'])
    rp = X(i["gt"] + i['challenge']['slice'](0, 32) + passtime);

    o = {
        "lang": "zh-cn",
        "userresponse": userresponse,
        "passtime": passtime,
        "imgload": 787,
        "aa": aa,
        "ep": {
            "v": "7.9.2",
            "$_BIE": false,
            "me": true,
            "tm": {
                "a": 1714119984961,
                "b": 1714119985262,
                "c": 1714119985262,
                "d": 0,
                "e": 0,
                "f": 1714119984962,
                "g": 1714119984962,
                "h": 1714119984962,
                "i": 1714119984962,
                "j": 1714119984962,
                "k": 0,
                "l": 1714119984964,
                "m": 1714119985252,
                "n": 1714119985254,
                "o": 1714119985268,
                "p": 1714119985594,
                "q": 1714119985594,
                "r": 1714119985601,
                "s": 1714119985603,
                "t": 1714119985603,
                "u": 1714119985603
            },
            "td": -1
        },
        "h9s9": "1816378497",
        "rp": rp
    }
    var u = new U()[$_CBFJN(392)](te)
        , l = V[$_CAHJS(392)](JSON[$_CAIAK(254)](o), te)
        , h = m[$_CAIAK(792)](l)
    return aa
}

        总体来说第三次的要稍微难一些,但是bilibili上有志远大佬的详细视频解说,如果本文看不明白的说可以看看志远大佬的视频,或者此处留言一起交流!

  • 32
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值