极验4滑块验证码--js逆向一步步分析

前言

        验证码我没这么搞过,之前搞完易盾点选就没弄过了,今天搞了一下极验4滑块,据说这个比较简单,实验了后也的确比较容易,居然没轨迹检测

分析

首先分析请求

从这里可以看到我们真正需要的只有w(challenge可以忽略不计,直接搜索就出来了,环境也不用就行)

w的加密位置分析

这个不是xhr请求,但是我们可以在发起程序找到堆栈,打上断点

这里可以发现w已经生成就往上跟栈就好了

看到for和switch有没有什么感觉???

不会真的傻乎乎的去跟栈吧,找都找烦,我们可以先跳出这个在看看参数有没有生成

打上断点重新运行代码

还是有,继续往上

往上追,同样方法过控制平坦

w的生成

不讲那么多,慢慢找肯定可以找到这里

找到r的生成位置,可以看出w参数是i

关键位置,解析得

w=m['default'](f['default']['stringify'](e), n)

我们需要知道e是什么,n是什么

经过分析差不多这3个有要求,f['default']['stringify']看起来就是用来将键值对转化为字符串,为了稳妥起见,我们采样字符串拼接的方式

我们先不看参数怎么来,先把简单的扣了

n的生成

然后扣e,这个忘了截图懒得弄,反正就这样

function e(){
    function aa(){
        return (65536 * (1 + Math['random']()) | 0)['toString'](16)['substring'](1)
    };
    return aa()+aa()+aa()+aa()
}

所有return打上断点,找返回值

解析得

w=d['arrayToHex'](u) + _;

u和_需要

_ = r[a][‘asymmetric']['encrypt'](n);
u=r[1]['symmetrical']['encrypt'](e, n)

_的生成

r[a][‘asymmetric']['encrypt']把这个扣下来,这个加密函数肯定在这里嘛,这个扣下来很容易,环境都不怎么需要补,

点进去

找外层的函数,还是自执行函数,扣起来多舒服,把T导出

然后js代码这样

myT = new window.T();
var myT = new window.T();
var _ = myT['encrypt'](n)
这样就好了

这个n看这个

也就知道和前面那个一样了

u的生成

点进去

这个看起来有点难办,我们可以看到这个函数是外层函数返回的,一般情况就会想把外层函数扣下来,全扣,但是这个u怎么办呢,没办法手动调用,扣外层跟没扣一样,当然也可以扣算法。我们全扣,这种情况解决不了可以找它导出地方,它既然能够调用这个函数肯定已经调用了外层

在外层开头打断点,往上跟

我们发现了什么

return t[$_DBCDZ(1041)] = g[$_DBCDZ(1079)](D),
                t[$_DBCDZ(1041)];

这不就是把那个函数导出去了吗,所以我们自己把n函数扣下来就行了

w=d['arrayToHex'](u) + _;这个我们就搞定了,(这个d['arrayToHex']就是复制粘贴的事)

所以就差e参数了

e参数

接上之前讲的

找参数生成位置

往上跟栈

找到userresponse

经过这3步操作,不过这个是this指针,所以不好搞定,另外,我们可以发现this中有pow生成了,我开始以为是pow_msg轨迹,找了我好久都没找到,原来它在还没滑动就生成了,我们不好找就另寻出路,我们可以看到所有键值对的名字都是unicode编码,所以我们搜索pow的unicode编码

\u0070\u006f\u0077

pow_msg=c + h

c = n + $_CAGHS(130) + i + $_CAGIV(130) + s + $_CAGHS(130) + r + $_CAGHS(130) + t + $_CAGHS(130) + e + $_CAGHS(130) + o + $_CAGHS(130)

h = v[$_CAGIV(111)]() 这个h进去就知道和我们之前的n一样随机生成,

p = new m[($_CAGIV(37))][('MD5')]()[$_CAGIV(699)](l)  猜测是md5标准()

这样就搞定这俩,就差

userresponse

不用看这个肯定要有检测鼠标位置函数,先回到这里

进去分析

可以看出这东西不就是返回这东西的x坐标嘛,那这个i应该就是滑动距离

所以全部分析完了,没有轨迹还是比较轻松的搞起来。

有用的话点个关注加赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值