作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!
第一个W值
目标: aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s
接口分析:
register-slide返回的challenge和gt需要拿到,其中gt相当于验证码的唯一ID
gettype.php返回需要用到的js文件路径和极验版本号,虽然也没什么屌用但是写py代码时候,还是需要调用这个接口
下面的get.php就是本次文章的主题了,需要逆出第一个w值的算法
下面是get.php的响应,其中的c和s后续需要使用
好了,直接开始逆向第一个w,浏览器F12搜索w是搜不到的,在源代码里w是用unicode进行编码过的,所以我们搜索w的unicode编码\u0077
找到w的位置, “\u0077”: i + r
关键代码如下:
var r = t[$_CEEIS(1121)]()
, o = $_BEB()[$_CEEJG(1124)](ge[$_CEEIS(457)](t[$_CEEJG(357)]), t[$_CEEIS(1120)]())
, i = p[$_CEEIS(1138)](o)
首先我们看r值是怎么来的,跟进t[$_CEEIS(1121)]()
最后会返回一个t,new X()[$_CGCJB(40)](this[$_CGCIZ(1120)](!0))
就是我们的r值了
然后我们来看this[$_CGCIZ(1120)](!0)
这个参数,这个参数来源于 te()
所以r就变成了:
var r = new X()['encrypt'](te())
然后开始扣代码,这个te()是一个随机值,后面也会使用到这个随机值,所以te就不扣了,我使用了固定的随机字符串"4bbec99e1a5a53cf"
然后我们开始分析o
o = $_BEB()[$_CEEJG(1124)](ge[$_CEEIS(457)](t[$_CEEJG(357)]), t[$_CEEIS(1120)]())
一共有两个参数,我们来看看他们是什么
第一个参数是一个JSON字符串,里面包含我们register-slide返回的gt和challenge,其余参数可以固定
第二个参数也就是我们r使用的te()随机字符串,写死就行了,我这里还是固定"4bbec99e1a5a53cf"
最后一个i值i = p[$_CEEIS(1138)](o)
还是扣代码
最终拿到第一个w值
第一个w值比较简单,扣扣代码补补环境就OK了