boss直聘__zp_stoken__参数分析

简介: boss直聘__zp_stoken__参数分析
项目地址:aHR0cHM6Ly93d3cuemhpcGluLmNvbS9qb2JfZGV0YWlsLz9xdWVyeT0lRTklODAlODYlRTUlOTAlOTEmY2l0eT0xMDAwMTAwMDAmaW5kdXN0cnk9JnBvc2l0aW9uPQ==

观前提示:

本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除






 定位加密点

这次我们需要的一个参数是cookie中的 __zp_stoken__

同样的 我们在全局搜索搜 __zp_stoken__

点进去看看逻辑

发现 我们还需要再找一下 GATEWAY_TOKEN_NAME 的出处


页面搜索看看

这里做了一个cookie的set操作 set的值为s s就是8025行的代码

到此 加密点就定位到了




 逻辑分析与堆环境

8025行打上断点刷新页面 成功断下

发现t对应ABC

传入e和i e为cookie中的seed i为cookie中的ts

接着点进ABC函数可以看到这个js为ob混淆

那我们用ast解一下看看用了哪些环境 解完后六千多行 还是挺好分析的

开局就看到

那我们就要想 他会不会是混淆了然后解密在Function里面做了一些浏览器检测操作呢 先不管 往后继续看

这里检测了window下面是否有document和获取了document.cookie

下面获取了navigator下面的cookieEnabledlanguage

同时也获取了_phantomcallphantom 由于这俩个都是undefined 所以可以不定义

这个cookie好像是没检测啥东西 写死就行

window={};
window._phantom = window.callphantom = undefined;
document=window.document={
  cookie:"sid=sem_pz_bdpc_dasou_title; __g=sem_pz_bdpc_dasou_title; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1596368815,1596368826,1597646720,1597646727; lastCity=100010000; __c=1597646720; __l=l=%2Fwww.zhipin.com%2Fjob_detail%2F%3Fquery%3D%26city%3D100010000%26industry%3D%26position%3D&r=https%3A%2F%2Fwww.baidu.com%2Fother.php%3Fsc.af0000afYf7jC0pXF4oS1iJj8V8v9tvluUwo5fBffPttzpNapbA7PKeD-W1kcVeA779tXhnoWS-eeuw39PZFzghQzrSfhjJTCveyDrQYXE5REN9Nk5VOVtOjuaS-vB__WNgXP9JJpVVkgjvXXVF7TCfIUZJFvkaOz5ZHqTnpMn9yCK7SnX6U6zwVGI1qjzNzjp87wGsKeJWvUCia5IicBV5F3DSZ.7D_NR2Ar5Od663rj6t8AGSPticrtXFBPrM-kt5QxIW94UhmLmry6S9wiGyAp7BEIu80.TLFWgv-b5HDkrfK1ThPGujYknHb0THY0IAYqmhq1Tqpkko60IgP-T-qYXgK-5H00mywxIZ-suHY10ZIEThfqmhq1Tqpkko60ThPv5HD0IgF_gv-b5HDdnHbYnjnYnHn0UgNxpyfqnHcLPWTLnj00UNqGujYknjm3P10vPfKVIZK_gv-b5HDkPHnY0ZKvgv-b5H00pywW5R9rf6KWThnqP1bkn0%26ck%3D3759.5.111.351.162.195.162.106%26dt%3D1597646717%26wd%3Dboss%25E7%259B%25B4%25E8%2581%2598%26tpl%3Dtpl_11534_22836_18980%26l%3D1519403413%26us%3DlinkName%253D%2525E6%2525A0%252587%2525E5%252587%252586%2525E5%2525A4%2525B4%2525E9%252583%2525A8-%2525E4%2525B8%2525BB%2525E6%2525A0%252587%2525E9%2525A2%252598%2526linkText%253DBOSS%2525E7%25259B%2525B4%2525E8%252581%252598%2525E2%252580%252594%2525E2%252580%252594%2525E6%252589%2525BE%2525E5%2525B7%2525A5%2525E4%2525BD%25259C%2525EF%2525BC%25258C%2525E6%252588%252591%2525E8%2525A6%252581%2525E8%2525B7%25259F%2525E8%252580%252581%2525E6%25259D%2525BF%2525E8%2525B0%252588%2525EF%2525BC%252581%2526linkType%253D&g=%2Fwww.zhipin.com%2F%3Fsid%3Dsem_pz_bdpc_dasou_title&friend_source=0&friend_source=0; __a=76203896.1596368628.1596368632.1597646720.16.3.9.8; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1597648407; __zp_stoken__=fce8afD16XzU3XWoFMU0rCVd6aHYYcG8%2FPlIvCmcRNRpxOz8pHQg3fB97QGJ0KGRHHjt%2BZF1lNyBvXC9VKzJuLE44OX4TWG5mfS1yIQw8QAY9XE0VUTNGJV88RxlIcwMMXAI7G0dsSFgtbDQ%3D"
};
navigator=window.navigator={
    cookieEnabled:true,
    language:"zh-CN"
};

继续下看

是一个canvas的常规操作

按照这个逻辑缺啥补啥给他

有人问这个toDataURL返回的值是怎么来的呢?我们只需要在浏览器按照这个逻辑执行一遍返回的值便是我们需要的canvas了 或者去js中相应的位置断点输出也是可以的

document.createElement = createElement;
function createElement(a){
    return {
        getContext:function(aa){
            return {
                textBaseline:"",
                font:"",
                textBaseline:"",
                fillStyle:"",
                fillRect:function(aa,bb,cc,dd){},
                fillStyle:"",
                fillText:function(aaa,bbb,ccc){}
            }
        },
        toDataURL:function(){
            return "自己填"
        }
    }
}

继续看看还有啥操作

这里出现了好几处eval和Function里面的操作 要多注意


这里的又出现了一次常规的navigator操作

很简单补的 反正四个字 缺啥补啥

navigator=window.navigator={
    userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
    appVersion:"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"
}

接着讲讲俩种hook方法

我们知道js里面用了eval 那我们能不能hook eval呢?

当然可以 改写一下就行了

首先进到ABC函数方法

然后控制台输入我们的hook代码

(function() {
  _eval=eval;
  eval=function(a){
    console.log("hook eval:",a);
    return _eval(a);
  }
})();

接着再输入

(new ABC).z("EJ+WpvF3xQsfjrE7SjvS0H/gopK+G7mN0mXrYC4ITZo=", parseInt("1597680891953") + 60 * (480 + (new Date).getTimezoneOffset()) * 1e3)

回车看效果

几处eval的代码就被我们hook出来了 是不是很方便


另外一种hook方法为插桩 我们就那Functin来实验

先把js放到本地 搜索Function 记得区分大小写 不然function也是一起匹配的

一共19处不是很多

全插上console 或者你懒的话直接打上debugger也是可以的 达到目的就行

插好后放控制台运行一下

最后根据返回的内容补上缺的东西就行啦

怎么确定我补的值是不是和网页返回的值一样?

你可以把这段代码再浏览器执行一遍和在node执行一遍 确保俩个返回的值对上了就可以啦




 运行效果



[完]



相关文章
|
存储 缓存 资源调度
Koodo Reader : 一个开源免费的电子书阅读器
【1月更文挑战第3天】 今天在浏览 GitHub 的时候,偶然发现了一个非常有趣的开源项目——Koodo Reader。这个项目是一款开源免费的电子书阅读器,支持多种格式。它具有一些非常独特的功能,深深地吸引了我的注意。在接下来的内容中,我将为大家详细介绍一下这个备受关注的阅读器项目。
2080 3
Koodo Reader : 一个开源免费的电子书阅读器
|
Oracle Java Unix
Java/JDK下载、安装与环境变量配置超详细教程(2022更新)保姆级,秒会
Java/JDK下载、安装与环境配置超详细教程(2022更新)保姆级,小白秒会[学习必备,建议收藏]。包含JDK8、JDK11、JDK17、JDK19等,本文将从JDK的下载与安装讲起,在从配置到第一个HelloWrold实践结束。在观看本文前我们需要知道JDK是什么,有什么作用?JDK是Java的开发工具包,包括JVM虚拟机,核心类库,开发工具。
27541 0
Java/JDK下载、安装与环境变量配置超详细教程(2022更新)保姆级,秒会
|
JavaScript 前端开发 容器
this、self、window、top 在 JavaScript 中的区别深入研究
在 JavaScript 开发中,`this`、`self`、`window` 和 `top` 是四个常用的概念。`this` 指向当前执行上下文的对象,其值取决于函数调用方式;`self` 在全局作用域中等同于 `window`,常用于 Web Workers;`window` 代表浏览器窗口,是全局变量的容器;`top` 指向最顶层窗口,用于判断是否在框架中。理解这些概念有助于编写健壮的代码。
413 1
this、self、window、top 在 JavaScript 中的区别深入研究
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
数据采集 文字识别 数据安全/隐私保护
轻松抓取:用 requests 库处理企业招聘信息中的联系方式
本文详细介绍如何利用Python的`requests`库结合代理IP技术,突破Boss直聘的登录验证与反爬虫机制,抓取企业招聘信息中的联系方式。文章首先阐述了Boss直聘数据抓取面临的挑战,随后介绍了代理IP轮换、登录会话保持及请求头伪装等关键技术。通过一个完整的示例代码,展示了从配置代理、模拟登录到解析HTML获取联系方式的具体步骤。此方法不仅适用于Boss直聘,还可扩展至其他需登录权限的网站抓取任务。
1588 0
轻松抓取:用 requests 库处理企业招聘信息中的联系方式
|
机器学习/深度学习 自动驾驶 机器人
深度学习之人类行为模仿
基于深度学习的人类行为模仿是指利用深度学习技术构建模型,使计算机系统能够学习、理解、并模仿人类的行为。通过模拟人类的动作、决策过程、情感反应等行为,相关技术在机器人、虚拟助手、人机交互等领域具有广泛的应用前景。
394 5
|
数据安全/隐私保护
App逆向百例|10|某App x-zse-96分析
App逆向百例|10|某App x-zse-96分析
901 0
|
JavaScript 前端开发 数据安全/隐私保护
雪球JS逆向:阿里系加密acw_sc__v2和反debugger
雪球JS逆向:阿里系加密acw_sc__v2和反debugger
2348 1
|
数据采集 数据可视化 算法
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
本文介绍了一个基于Python Flask框架的Boss直聘数据分析与可视化系统,系统使用selenium爬虫、MySQL和csv进行数据存储,通过Pandas和Numpy进行数据处理分析,并采用模糊匹配算法进行薪资预测。
579 0
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
|
JavaScript Python
boss直聘参数__zp_stoken__分析第二弹
boss直聘参数__zp_stoken__分析第二弹
787 0