最近闲来无事 顺便玩玩Cloudflare,Cloudflare 就是我们俗称的五秒盾
大概在以前五秒盾还是一个很简单的东西 自从更新后 玩法已经大不相同 各种环境检测 各种dom操作 都要想方设法在node里面复现
注意注意:本文没有详细分析到里面的监测点啥的!
观前提示:
本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除
目标网址:aHR0cHM6Ly9wYXN0ZWJpbi5jb20vbG9naW4=
0x1流程
首先进来会进入一个跳转页面
接着会发一些包
几秒后重新跳转到正确的页面
以上就是一个网页上的流程
本文到此结束
0x2内容分析
经过反复测试主要的包就是这几个
首次登陆网址的时候 会进行一次503 跳转到cloudflare界面
在这里面 有用的信息有
然后就是根据包的内容来走流程啦
带上window._cf_chl_opt和请求的js代码一起运行计算后能得到一个
URL和Data 去请求
并得到返回的一段加密js代码和cookies
这段cookies在第二次请求时需要带上 应该是作为标识
根据上面返回的加密js和cookie又发一次请求(这次的请求因为夹带了各种环境 所以巨长)
去请求后又返回一段加密js代码,加密的js代码中包含下面三个字段值
如果成功便可以拿到下面三个字段值
jschl_vc
jschl_answer
cf_ch_verify
如果不成功也是会返回加密的js代码,但是里面没有包含上面的三个字段值
并且里面包含有document.location.reload()
一般也可以从返回的js代码的长度判断得出来
返回长度在2800-4000左右的为成功的
返回长度小于2500 或者 大于5000的为失败的
(此代码是解密后且ast解混淆后的代码)
最后就是请求拿最后的cookie了
这便是流程内容的分析 因为内容跳转的太快 有时候容易跳过去而拿不到值就像这样
所以我推荐使用fd抓包之类的工具 这样就不会错过有用的信息了
也可以用fd下hook 会帮助下断直接命中要点
我自己是hook Function
还有python requests是不行的 需要TLSv1.2或以上 所以 推荐使用 httpx
0x3 AST解混淆
ast解混淆的代码暂且还未挂上 如有需要的可以私聊我要
对分析结果很有帮助
0x4 一丁丁小经验
第一次发包无非就为了第二次做准备
但是环环相扣
所以大家加油蛤!
主要讲第二层
这个是我经常挂的一个hook脚本(这个是hook网页的)
(function() { window.xxx=1; xxa=Function; Function=function(a){ if(window.xxx==2){debugger} window.xxx+=1; return xxa(a) } })();
方便我挂住后可以输出检测完环境生成的window._cf_chl_ctx
所有的环境检测后都会放在这里
接着运行第一层写入的 window.sendRequest函数去发包
所以我们要看环境对不对的上可以输出这个函数 然后和网页上断下的值对不对的上 至于怎么操作 还得看你们 自己慢慢琢磨才好
我自己的做法是
伪造了send 在send上面打断点 输出window._cf_chl_ctx
在一个一个对比
仁者见仁智者见智啦
0x5运行结果
最终下来通过这些环境可以达到接近九十的通过率 可喜可贺 可喜可贺
完美撒花 感谢各位大佬观看
由于内容非详细分析 还请各位大佬见谅
可能各位大佬看了个寂寞
听君一席话 犹如听君一席话
[完]