js逆向 wowowowowowo安居客动态cookie

2024-02-21 03:40

本文主要是介绍js逆向 wowowowowowo安居客动态cookie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

今天我们逆向它的动态c o o,k i e,安排。

1、首先抓包分析
  • url:aHR0cHM6Ly9iZWlqaW5nLmFuanVrZS5jb20vc2FsZS9wMy8/ZnJvbT1lc2ZfbGlzdA==
    在这里插入图片描述

经过多次抓包,可以确定 fzq_js_anjuke_ershoufang_pc、xxzl_cid、xxzl_deviceid 这三个cookie是动态的,(也许你自己抓包尝试过后会觉得xxzl_cid 和 xxzl_deviceid是静态的,这是一个坑,一会儿讲)

fzq_js_anjuke_ershoufang_pc的生成方式很简单,我就不讲了,主要讲另外两个cookie。

2、定位cookie生成位置

我们一般定位cookie可以使用hook document.cookie的方式快速定位

let hookCookie = function (key) {'use strict';var cookie_str = document.cookie;Object.defineProperty(Document.prototype, 'cookie', {get: function () {return cookie_str;},set: function (val) {console.log('捕获到cookie设置-->', val);debugger//if (val.indexOf(key) !== -1) debugger;let addCookie = val.split('; ')[0]addCookie = addCookie.split('=')let cookie_object = {}cookie_str.split('; ').map(function (v) {v = v.split('=')cookie_object[v[0]] = v[1]})cookie_object[addCookie[0]] = addCookie[1]let cookie_arr = []for (let k in cookie_object) {k = k + "=" + cookie_object[k] + '; 'cookie_arr.push(k)}cookie_str = cookie_arr.join('')return cookie_str}});
}
3、去缓存

断点断住后,调试跟栈
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以发现它在取之前缓存的cookie。

如果它取不到,就会去浏览器中的数据库中取,像localStorage、sessionStorage、indexedDB、openDatabase

如果还是取不到,它会去window.name中取(页面刷新后window.name的值不会消失)。

也就是说,如果你不清空这些,网页是不会重新加载这两个cookie的(造成了xxzl_cid 和 xxzl_deviceid是静态的错觉),

解决方案:
  • 1、可以开无痕浏览器调试,缺点是无痕模式没有插件辅助。
  • 2、自己写一个油猴插件自动清理这些缓存。

我采用的是第二种方式

(function() {'use strict';!function (config) {window.name = ''localStorage.clear()sessionStorage.clear()for (let dbname of config['indexedDB']) {try {window.indexedDB.deleteDatabase(dbname);} catch (e) {console.error(e)}}for (let database of config['openDatabase']) {try {let db = window.openDatabase(database['dbName'], database['version'], database['tableName'], 1048576);db.transaction((tr) => tr.executeSql("drop table " + database['tableName'], []))} catch (e) {console.error(e)}}!function () {var keys = document.cookie.match(/[^ =;]+(?=\=)/g);if (keys) {for (let k of keys) {if (config['cookieFilter'].indexOf(keys) !== -1) continue;document.cookie = k + '=0;path=/;expires=' + new Date(0).toUTCString();document.cookie = k + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString();}}}()}({'indexedDB': ['dbname'],  'openDatabase': [{'dbName': 'dbname','version': '','tableName': 'tableName'}],'cookieFilter': []  // 指定哪些cookie不用被清除}  )
})();
4、分析cookie加载流程

去掉缓存后,继续调试跟栈,你也跟不到cookie的生成位置(o.O) 手动滑稽

因为cookie是异步生成的,不断套娃回调,跟到崩溃你也很难跟到

最简单最有效的方法是直接在文件中搜索xxzl_cid (意不意外,惊不惊喜 O.o)
在这里插入图片描述

第一步是得到一个加密字符串,类似这样:d3019140953d13c51......,它是异步生成的跟栈跟不到

第二步是用加密字符串拼接出了一个url

第三步是用url发起请求

第四步是解密第三步请求返回的响应数据

第五步是对解密数据进行分割处理,得到cookie

第六步是设置cookie

5、扣算法

以上cookie加载的六步,最重要的就是加密函数和解密函数了,其中加密的位置跟不到,那就只有跟解密的位置了。

在这里插入图片描述

断点断住解密位置后,单步调试进入

在这里插入图片描述

这不是AES和sha256吗,接下来该做什么,就不用我说了吧!

这篇关于js逆向 wowowowowowo安居客动态cookie的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/730465

相关文章

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)