目录
目标网址:
aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9mdWxscGFnZS5odG1s
加密方式:
-
加密算法:RSA、AES、MD5
抓包分析
通过抓包可以看到register-fullpage
链接 会返回我们需要的 challge
,gt
后续会用到
需要上面返回的challenge
, gt
请求 第二个get.php
链接,返回我们后续会用到的数据
get.php 会返回 c 和 s,同样后期会用到,这个请求同样需要 w 值,三代无感里,必须得要,不然最后是会验证失败的,可能不带 w 请求,返回的 s 是个假的值,导致最后验证失败
ajax.php 验证是否成功,同样需要 w 值,成功则会返回一个 validate
w参数分析
w
值 :"\u0077"
全局搜索
主要就是 r、o、i 的值,关键代码:
var r = t[$_CEIIU(1300)]()
o = $_BFZ()[$_CEIHW(1372)](ge[$_CEIHW(417)](t[$_CEIIU(321)]), t[$_CEIHW(1361)]())
i = p[$_CEIIU(1303)](o)
先跟进 r
看看代码,还是熟悉的 RSA
要不扣下来,要不就是库实现
库实现的话你得找到他key 这个东西
这里直接扣下来
"gt":"e52c06c937981b90b275d0aff1d40076","challenge":"0201de0b9955c546d1198b6c9e558d50","offline":false,"new_captcha":true,"product":"float","width":"300px","https":true,"api_server":"apiv6.geetest.com","protocol":"https://","type":"fullpage","static_servers":["static.geetest.com/","dn-staticdown.qbox.me/"],"beeline":"/static/js/beeline.1.0.1.js","voice":"/static/js/voice.1.2.2.js","click":"/static/js/click.3.0.8.js","fullpage":"/static/js/fullpage.9.1.4.js","slide":"/static/js/slide.7.9.0.js","geetest":"/static/js/geetest.6.0.9.js","aspect_radio":{"slide":103,"click":128,"voice":128,"beeline":50},"cc":12,"ww":true,"i":"6126!!7414!!CSS1Compat!!1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!2!!3!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!-1!!1!!-1!!-1!!-1!!0!!0!!0!!0!!1920!!317!!1920!!1040!!zh-CN!!zh-CN,en,zh!!-1!!1!!24!!Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36!!1!!1!!1920!!1080!!1920!!1040!!1!!1!!1!!-1!!Win32!!0!!-8!!3515ba42d4414f09872d5667a81df514!!0!!internal-pdf-viewer,internal-pdf-viewer,internal-pdf-viewer,internal-pdf-viewer,internal-pdf-viewer!!0!!-1!!0!!12!!Arial,ArialBlack,ArialNarrow,ArialUnicodeMS,BookAntiqua,BookmanOldStyle,Calibri,Cambria,CambriaMath,Century,CenturyGothic,CenturySchoolbook,ComicSansMS,Consolas,Courier,CourierNew,Garamond,Georgia,Helvetica,Impact,LucidaBright,LucidaCalligraphy,LucidaConsole,LucidaFax,LucidaHandwriting,LucidaSans,LucidaSansTypewriter,LucidaSansUnicode,MicrosoftSansSerif,MonotypeCorsiva,MSGothic,MSPGothic,MSReferenceSansSerif,MSSansSerif,MSSerif,PalatinoLinotype,SegoePrint,SegoeScript,SegoeUI,SegoeUILight,SegoeUISemibold,SegoeUISymbol,Tahoma,Times,TimesNewRoman,TrebuchetMS,Verdana,Wingdings,Wingdings2,Wingdings3!!1683368857640!!-1!!-1!!-1!!12!!-1!!-1!!-1!!5!!-1"}'
JSON.stringify()
这是重点,不然加密之后的结果会很短
js中写死传入gt
以及challenge
就行,例子:
同样需要注意的是上图中this$_CHAHW(1361)
也是个随机字符串,会遇到多次,但整体一次验证下来都是相同的值,不然验证会失败,点选、滑块等一系列都一样的。
this[$_CHAHW(1361)](e)
跟进 this[$_CHAHW(1361)](e)
跟进来之后,可以看到 te()
函数,再接着跟进去
进来之后就可以看到了随机数, 是由4个 e()
函数组成
然后是 o 的值,这里和以前一样,跟进去看仍然是 AES 加密。t[$_CEIHW(1361)]()
依旧是随机字符串。得保持随机字符串一致,不然后续验证不通过
$_BFZ()[$_CEIHW(1372)]
任然是AES加密 中间这一串 pe[$_CFAFP(416)](t[$_CFAGw(353)]),也没啥特别的,除了 gt 和 challenge,其他都是定值,最后面那一串 i 的值,实测写死、置空都行。
ge[$_CEIHW(417)](t[$_CEIIU(321)])
o = $_BFZ()[$_CEIHW(1372)](ge[$_CEIHW(417)](t[$_CEIIU(321)]), t[$_CEIHW(1361)]())
t[$_CEIHW(1361)]() # 随机数
$_BFZ()[$_CEIHW(1372)] # AES加密
ge[$_CEIHW(417)](t[$_CEIIU(321)] # ge有关的参数
跟进去之后可以看到 $_ECCo(3)
$_ECDa(35)
$_ECDa(23)
同在一行,AES加密其中vi以及key都给出来了,直接引库实现
然后继续跟进 i,把前面 o 的值转换成一个大的字符串,这里也不是很复杂,直接扣代码即可:
跟进 p[$_CEIIU(1303)](o)
之后接着进入到
this[$_JDDM(429)](e);
这里我们注意他参数只有e
一个
跟进来之后我们发现他的参数是两个 一个e
一个 o
, 这个o
就是我们需要注意的地方 他这里是this赋值,我们就刷新几次看看是不是会变,不会就好办了,直接固定值,接着就是缺那补那就行
第二个W
值
全局搜索:var n = {};
可见 $_CFIDG(847)
就是第二个 w
值,t[$_CFICl(1481)]
就是加密的结果
t[$_CFIDG(847)]
就是 w 值,也就是 t['$_CEDO'],前面定义了var t = this,经过第 8102 行的
t[$_CFICl(1488)]();
之后,就有了 w 的值,所以要跟进去重点看这一行。
如上图所示,e、t、n、r
中涉及到一些浏览器环境值的计算,当然还有鼠标移动等相关数据的计算,如下图所示:
跟进 i[$_CFJIy(1378)][$_CFJHp(1357)]()
就可以看到这个是移动方面的列表
而实际测试发现这四个值直接置空也可以,在本例中可以,不知道是否有其他案例校验更加严格再往下,会遇到很多给变量赋值的地方,如下所示,V 是 MD5 方法,中间的 p[$_CFJHp(942)](t)
和以前类似,返回一个对象中的 res 和 end 相加,这里就不再赘述了。
通过检测与md5加密
一直 也就是说 V(p[$_CFJHp(942)](t))
中 V函数就是MD5加密
数据一个一个加起来的计算的
这些数据我们格式化一下,大致结构如下图所示:
其中 ep
里面的 ven
、ren
是显卡相关信息,fp
、lp
是取了两个鼠标移动的位置信息,直接写死为null
也可以,tm
就是 window.performance.timing
的一些东西,自己随便伪造一下就行了。
最后一步 i[$_CGDBA(1436)],随机字符串为 key,将前面的数据 r 进行 AES 加密,得到我们最终的 w 值,如下图所示:
结果展示
错误复现
old challenge___error_02 错误: 第二次请求网址错误
param decrypt error___error_03 错误: challenge 不是固定 或者是参 W 数错误
最后有什么问题可联系博主,进行疑问解答,这个RSA加密,搞不出来可私聊
若是这篇文张不是很方便看,可以移步到:我的主页---名称---qq_xxxx