声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
前言
这次会简单的讲解阿里227版本滑块参数n的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。
一.目标网站
aHR0cHM6Ly93ZS41MWpvYi5jb20=
如上图 我们要过这样的滑块验证码
滑过之后。nocaptcha/analyze.jsonp这个链接中的 n参数 以227!开头的。
我们需要把这个参数逆向出来。这个参数与环境和滑块运动轨迹有关。
二.参数分析
1.我们得找到是哪里生成的
那我们如何找到是哪里生成的呢?这里提供两种解决方案。
a.跟栈(说实话任何一个项目都可以通过这个方法 但是这种方法效率非常低)。
b.通过监控鼠标事件。
下面我是通过监控鼠标事件。寻找参数生成的位置。
如上图所示。勾选这两个参数。然后鼠标点击验证码开始滑动。
然后就开始进入堆栈了。
跳过第一个栈。到达下图位置
可以看到这个位置其实就是一些坐标轴的信息。比如x和y等等。
继续往下看。
可以看到这个地方是添加事件。根据不同的鼠标事件执行不同的方法。
我们可以挨个去看。这里因为时间原因。就不浪费时间了
进入 f, “mousemove”, s中的s方法。
到达m函数生成处
虽然这个值的确能生成227.但是我们不确定这个值是否为正确的。先不管。打上断点再说。
这个位置显而易见就是当时的那个params参数中的n。
这里已经找到生成的位置了。但具体还需要点进函数内部去看。
由于这是添加鼠标事件。是函数 并不是执行没办法进断点。
2.通过鼠标进栈
这个时候要进栈。需要把mousedown取消。
然后划过滑块 不放开。这个就能进入栈。
接着进入这个函数。这是个过程。要有耐心的一点点看。
后面就简单了 通过单步调试
到这个地方。可以了 这个地方就是最终生成的位置。
分析这个参数e:
可以看到 e就是这个值是定值 写死就行。
3.得到参数值n的方法
这里简单介绍两种把
a.扣代码。
b.补环境
这里采用补环境的方法。大概补个1000行左右就行了。
吐出来的环境比我的命都长。
补环境代理代码:
proxy = function(proxy_array) {
for (var i = 0; i < proxy_array.length; i++) {
handler = '{\n' +
' get: function(target, property, receiver) {\n' +
' console.log("方法:", "get ", "对象:", ' +
'"' + proxy_array[i] + '" ,' +
'" 属性:", property, ' +
'" 属性类型:", ' + 'typeof property, ' +
// '" 属性值:", ' + 'target[property], ' +
'" 属性值类型:", typeof target[property]);\n' +
' return target[property];\n' +
' },\n' +
' set: function(target, property, value, receiver) {\n' +
' console.log("方法:", "set ", "对象:", ' +
'"' + proxy_array[i] + '" ,' +
'" 属性:", property, ' +
'" 属性类型:", ' + 'typeof property, ' +
// '" 属性值:", ' + 'target[property], ' +
'" 属性值类型:", typeof target[property]);\n' +
' return Reflect.set(...arguments);\n' +
' }\n' +
'}'
eval('try{\n' + proxy_array[i] + ';\n'
+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}catch (e) {\n' + proxy_array[i] + '={};\n'
+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}')
}
}
proxy_array = ['window','document','location', 'navigator', 'history', 'screen','span', 'div',