Cloudflare的分析流程

简介: Cloudflare的分析流程

最近闲来无事 顺便玩玩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运行结果

最终下来通过这些环境可以达到接近九十的通过率 可喜可贺 可喜可贺




完美撒花 感谢各位大佬观看

由于内容非详细分析 还请各位大佬见谅

可能各位大佬看了个寂寞

听君一席话 犹如听君一席话


[完]

相关文章
|
API 调度 语音技术
基于Qt的简易语音助手设计与实现
基于Qt的简易语音助手设计与实现
927 2
|
10月前
|
存储 缓存 NoSQL
告别数据僵尸!Redis实现自动清理过期键值对
在数据激增的时代,Redis如同内存管理的智能管家,支持键值对的自动过期功能,实现“数据保鲜”。通过`EXPIRE`设定生命倒计时、`TTL`查询剩余时间,结合惰性删除与定期清理策略,Redis高效维护内存秩序。本文以Python实战演示其过期机制,并提供最佳实践指南,助你掌握数据生命周期管理的艺术,让数据优雅退场。
581 0
|
编解码 监控 网络协议
【那些反爬和反反爬】JA3指纹
【那些反爬和反反爬】JA3指纹
3170 0
|
存储 Java 数据库
Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d
Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d
Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d
|
C语言 容器
【qt】动态属性(下)
【qt】动态属性(下)
248 1
|
Python
pyinstaller 安装使用
【7月更文挑战第8天】
1698 3
|
开发工具 git
蓝易云 - 解决git clone时出现Failed to connect to 127.0.0.1 port 1573问题
希望这些信息能帮助你解决问题。如果问题仍然存在,可能需要检查你的网络设置或者联系你的网络管理员。
401 3
|
监控 安全 应用服务中间件
HTTPS代理搭建技巧分享​
请注意,HTTPS代理的配置和管理需要谨慎,特别是涉及SSL证书的处理。确保您的代理服务器按照最佳实践进行配置和管理,以提供安全可靠的代理服务。
1035 3
|
人工智能 安全 数据安全/隐私保护
真香,一分钟N个谷歌邮箱注册成功,抓紧上车
真香,一分钟N个谷歌邮箱注册成功,抓紧上车