Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2019年末逆向复习系列之努比亚Cookie生成逆向分析

2019年末逆向复习系列之努比亚Cookie生成逆向分析

作者头像
云爬虫技术研究笔记
发布于 2019-11-28 15:13:04
发布于 2019-11-28 15:13:04
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关。

这篇文章是《2019年末逆向复习系列》的第二篇:《努比亚Cookie生成逆向分析

本次案例的代码都已上传到Review_Reverse上面,后面会持续更新,大家可以Fork一波。

逆向网址

努比亚-牛仔俱乐部:https://bbs.nubia.cn/

逆向背景

努比亚俱乐部的逆向有意思在它的Cookie是动态生成的,是由Js生成Cookie的案例,并且这个网站还有前端反调试的机制,对于新手爬虫工程师来说很值得学习和研究。

分析流程与逆向破解

我们以这个链接为例努比亚-牛仔俱乐部,访问并打开开发者工具,读者会发现并没有遇到什么异常情况。

等等,我们这次讲的是生成Cookie,我们首先需要把该网站的缓存、Cookie清除才行,不过我们先分析分析它们的Cookie的关键点。

看到Cookie的组成,觉得acw_sc__v2acw_sc__v3参数比较可疑,这个疑问我们先存在,之后再看看。 之后我们照例在Application->Clear Storage清除数据。

清除完之后我们依旧打开开发者工具重新刷新页面进行访问,可以发现,网站弹出debugger

知识点1:前端反调试

随着现在爬虫课程的普及,越来越多人都掌握了基本的爬虫用法,类似利用开发者工具寻找网站接口或者进行调试逆向寻找加密方法,对于网站本身来说,如何简单又有效地减缓这种行为是应该考虑的,所以一些网站在代码中注入了检测开发者工具是否打开的Js代码,这样,当我们想要打开开发者工具的时候我们就会陷入网站的无限循环的debugger地狱,而且这样还会造成Js的内存泄漏,你可以在遇到这种情况的时候检查你的chrome页面进程,会发现内存占用量越来越高,可你什么都没干?所以,对于这种反调试手段,我们需要学习如何绕过。

1. 绕过debugger地狱

我们首先查看右边的Call Stack调用栈,我们一一分析,可以追溯到如图所示的地方。

关键代码是这样的,也就是一开始会执行_0x4db1c这个函数(初步理解是上文所说的检测开发者工具是否打开的函数,之后setInterval函数是每隔一定时间执行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_0x4db1c();setInterval(function() {_0x4db1c();}, 4000);

我们再看_0x4db1c的函数,它停在_0x355d23这个函数上面

面对这样的情况,我们可以直接在Console里面对这个函数进行重写

重写好之后我们执行下,会发现这个页面就直接生成好Cookie去访问页面了,这样达不到我们之前想研究它Cookie生成的逻辑的目的。

目前我们绕过了debugger反调试,那我们该怎么获取生成Cookie的逻辑呢?我们接着分析

2. 破解Cookie生成逻辑

为了我们分析的方便,我们可以直接把这个debugger的代码保存下来,在我们本地代码中删除debugger的逻辑之后进行调试。

我们直接打开这个html文件,我们会发现网页一直卡在Sources不动,为什么会出现这种情况?

仔细分析代码,发现有些Regexp的检测代码,根据以往的经验可能是检测代码是否长开?防止有人本地调试?我们使用压缩后的代码,大家可以用Js压缩/解压工具进行压缩

果然,压缩之后还是正常的,那么可以验证我们刚才的想法了。

我们删除debugger相关的代码,也就是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_0x4db1c();setInterval(function() {_0x4db1c();}, 4000);

打开网页后发现页面一直在闪?html代码不长,我们再仔细看看,注意到一个细节setTimeout

setTimeout是延后几秒执行一次,我们看一下’\x72\x65\x6c\x6f\x61\x64\x28\x61\x72\x67\x32\x29’是什么意思,我们把它放在Console里看看。

可以看到,setTimeout执行reload函数,我们看看reload函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function reload(x) {            setCookie("acw_sc__v2", x);            document.location.reload();        }

里面的逻辑是先设置Cookie再重载页面,所以我们这里一直闪的原因是先执行setTimeout再重载页面又执行setTimeout,所以又是一个循环地狱,我们删除setTimeout这段代码就行。等等,我们再看看上面Console中的结果reload(arg2),然后到reload函数中,acw_sc__v2是由arg2这个函数得来的,好,我们现在明白了哪个地方生成的Cookie了,我们在html代码中搜索arg2,然后对它打上断点。

3. 分析加密算法

我们先总体看下arg2函数的构成

也就是需要_0x23a392_0x5e8b26这个两个关键参数,_0x23a392来自arg1的方法生成,它们都是有_0x55f3这同一个方法,所以我们的思路就清晰了。 我们先看看_0x55f3这个方法,并且做一些调试,可以发现_0x55f3通过传入的参数不同使用不同的方法,有些类似于控制流平坦化

知识点2:控制流平坦化

直接上图

首先_0x5e8b26这个参数我们多次调试后发现是个变量,可以先确定,"3000176000856006061501533003690027800375",当然我们也可以直接搜索_0x5e8b26

而我们获取到_0x23a392_0x5e8b26之后进行加密的方法如下

大致的加密就是如上这样,因为整体代码量也不大,可以直接改写或者使用python加载Js都行。

4. 总结思路

这次的案例主要是可以学习到两点,第一点就是我们懂得有些网站会进行前端反调试,手段之一就是会检测开发者工具是不是打开,而且如果我们把代码拿到本地,竟然还会检测本地代码是否是展开的?第二点我们需要习惯这种代码混淆的方式,有些网站会用_0xxxx等无意义的符号进行混淆,以及使用16进制来做混淆恶心我们,我们想要还原的话直接把代码放到Console里面执行一下就可以了,因为Js也能读取原始的16进制码。

代码实战

有了上面这个分析流程,我们就可以开始Coding了,以下是acw_sc__v2加密的流程。 获取arg1参数的代码

获取arg2参数的代码

测试的代码,先访问官网动态获取Cookie再在请求头的Header中加入这个acw_sc__v2参数去重载URL访问官网。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云爬虫技术研究笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【JS 逆向百例】X球投资者社区 cookie 参数 acw_sc__v2 加密分析
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
K哥爬虫
2021/12/30
9890
【JS 逆向百例】X球投资者社区 cookie 参数 acw_sc__v2 加密分析
请求网页时,怎么给我返回了一段 JavaScript 代码
如果你想要获取这个网站的源代码的话,必须要先获取一个 cookie,其字段名为:acw_sc__v2,你是不是不相信?爬取网站还需要获取 cookie 值才可以?说实话,我刚开始爬的时候我也不相信,直到我运行请求代码,一看,给我返回这个:
sergiojune
2019/04/29
2.5K1
请求网页时,怎么给我返回了一段 JavaScript 代码
Python爬虫之js加密 - setCookie
在爬取某些网站的时候,获取的返回数据不是意料中的html,而是一大串毫无格式的js,例如:
叫我阿柒啊
2022/05/09
3.6K0
Python爬虫之js加密 - setCookie
2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析
这篇文章是公众号《云爬虫技术研究笔记》的《2019年末逆向复习系列》的第七篇:《Boss直聘Cookie加密字段__zp_stoken__逆向分析》
云爬虫技术研究笔记
2019/12/24
1.8K1
2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析
2019年末逆向复习系列之淘宝M站Sign参数逆向分析
本次案例的代码都已上传到Review_Reverse上面,后面会持续更新,大家可以Fork一波。
云爬虫技术研究笔记
2019/11/28
1.1K0
2019年末逆向复习系列之淘宝M站Sign参数逆向分析
2019年末逆向复习系列之拼夕夕Web端anti_content参数逆向分析
这篇文章是公众号《云爬虫技术研究笔记》的《2019年末逆向复习系列》的第八篇:《拼夕夕Web端anti_content参数逆向分析》
云爬虫技术研究笔记
2019/12/24
1.4K0
2019年末逆向复习系列之拼夕夕Web端anti_content参数逆向分析
【2021-09-07】JS逆向之空气质量历史数据查询
目标网站:aHR0cHM6Ly93d3cuYXFpc3R1ZHkuY24vaGlzdG9yeWRhdGEvZGF5ZGF0YS5waHA/Y2l0eT0lRTYlOUQlQUQlRTUlQjclOUUmbW9udGg9MjAyMTA5
全栈程序员站长
2022/09/06
5420
【2021-09-07】JS逆向之空气质量历史数据查询
JS破解--反反调试
今天应小伙伴们意愿写一下过无限 debugger 的两个案例(其实都很简单,只要掌握一两个操作点的话)
Python编程与实战
2019/12/04
4.7K0
【JS逆向百例】某江 Hospital 逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2024/12/30
1350
【JS逆向百例】某江 Hospital 逆向分析
突破前端反调试--阻止页面不断debugger
不知道你们有没有遇到过上图这样,有时候想调试网站,一打开开发者工具立即 debugger ,而且跳过了还是会继续,或者是有时候在调试网页时,突然就给你来一个 debugger,接着就是反复来回 debugger 了,贼烦,那今天分享个教程,教大家如何跳过这个 debugger。
sergiojune
2019/09/12
10.3K0
人均瑞数系列,瑞数 4 代 JS 逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2022/07/08
2.1K0
人均瑞数系列,瑞数 4 代 JS 逆向分析
百一测评网站切屏检测绕过
说是破解,其实也就是想办法把防切屏解了。 之前有些考试软件防止切屏可以用虚拟机,稍微复杂一点,至于浏览器检测切屏,无非就是检测焦点,像有些网站的动态标题就是这样,那么用什么来实现检测焦点呢?这里不得不提到JavaScript。
Y5neKO
2022/01/13
3.7K0
百一测评网站切屏检测绕过
JS逆向 | 分析某监测网站的 debugger 反爬措施
这个网站的加密比较简单的,网上也有不少关于这个网站加密的分析例子,所以关于这个网站的正文加密,这里不做分析。
咸鱼学Python
2020/02/19
2K0
JS逆向 | 分析某监测网站的 debugger 反爬措施
Python 爬虫进阶必备 - 以 aqistudy 为例的无限 debugger 反调试绕过演示(附视频)
这样的 debugger ,可以在堆栈里翻看上一层堆栈看看能否置空函数来防止进入 debugger
咸鱼学Python
2021/09/08
1.3K0
Python 爬虫进阶必备 - 以 aqistudy 为例的无限 debugger 反调试绕过演示(附视频)
前端无秘密:看我如何策反JS为我所用(上)
近日,参加金融行业某私测项目,随意选择某个业务办理,需要向客户发送短信验证码: 响应报文中包含大段加密数据: 全站并非全参数加密,加密必可疑!尝试篡改密文,页面提示“实名认证异常”: 猜测该密文涉及用户信息,且通过前端 JS 解密,验证之。 手工分析 要分析前端,自然得打开浏览器的开发者工具。习惯性按下 F12 键,无反应,显然页面禁用 F12,没有调试环境,所有后续工作均无法开展,我得创造环境。 1.1 创造前端调试环境 虽然禁用 F12,但未禁用 shift-F5,它也能启用开发者工具,或者,页面
FB客服
2023/04/26
5700
前端无秘密:看我如何策反JS为我所用(上)
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
K哥爬虫
2023/01/12
1.5K0
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
一种针对WEB前端混淆防护的通用对抗方法
在介绍“WEB前端混淆防护”之前,我们先来了解一下“WEB前端混淆”。一般来说,WEB前端混淆技术可以在不影响页面呈现和用户交互的情况下,将HTTP会话报文中的关键内容(请求参数、HTML、JS等)转换为难以阅读和修改的形式。
绿盟科技研究通讯
2020/05/14
4.5K0
Python 爬虫进阶必备 | 某电子商务生态链平台登陆 Form Data 加密逻辑分析(补环境大法好啊!!)
aHR0cHM6Ly9wYXNzcG9ydC5nb2pveS5jb20vbG9naW4=
咸鱼学Python
2021/08/10
5400
[959]JS逆向技巧分享
点击代码,然后按ctrl+f 或 command+f 调出搜索框。搜索支持 关键词、css表达式、xpath
周小董
2023/10/17
9420
[959]JS逆向技巧分享
反调试问题-debugger
最近在爬取某个网页时,发现了一种奇怪的现象。在打开浏览器进入所要爬取的网页之后,我们通常会选择F12即打开开发者工具来对网页进行分析。但这个页面一打开控制台就不断的debugger,无法正常观察Network。
老肥码码码
2020/01/17
1.8K0
反调试问题-debugger
推荐阅读
相关推荐
【JS 逆向百例】X球投资者社区 cookie 参数 acw_sc__v2 加密分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验