今日网站
aHR0cHM6Ly9pLmZrdy5jb20v
本篇文章来自第 3 交流群,NTrach 的投稿~
以下为分析正文
正文
大家好,我是 NTrach,今天给大家带来的是一个网站的滑块验证,加密比较简单,算是抛砖引玉,话不多说直接开干!
抓包分析
输入账号密码,点击登录出现滑块,分析一下请求流程,就是get
这个包
点进去看一下发送的参数
有一个bss
和bsskey
两个参数,这两个参数怎么来的呢?
先用全局搜索一下
发现了一个惊喜,bsskey
是在主页面给我们的,那我们可以通过正则直接提取出来;
发送请求成功后,会给我们返回下面的数据
其中imgID
是背景图片的base64
数据,sliderid
是滑块图片的base64
数据,获取这两个数据转换一下就能得到我们的图片了
逆向分析
滑动之后发现出现了validate
的包,这个就是提交验证的包了
参数多了一个vi
,那我们直接搜vi
这个参数
定位到下图这里,再次发送请求,观察断下来的数据
这样可以分析
e
是一个对象,里面有很多的数据
最主要的我们看的是vi
的值,vi
是将一个对象转成字符串,然后通过N
进行加密,这个对象中s
的值是10
,l
的值是t
也就是缺口的坐标
“悄悄 BB 一句除了 l 的值和 validateSign 的值,其他的都可以写为定值
我们直接就可以分析这个N
方法了,跟进去看看
一看这个N
方法就是简单的换位操作,那就简单了直接扣下来,再补充一个K
的值,运行一下
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 }
运行结果如下
整个逻辑就可以还原出来了
这个是属于比较简单的滑块,像识别缺口的方法大家自行百度,网上一搜一大把~
完结撒花~
好了,以上就是今天的全部内容了。
我是没有更新就在摸鱼的咸鱼
收到请回复~
我们下次再见。