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

相关文章

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var

逆向学习汇编篇:内存管理与寻址方式

本节课在线学习视频(网盘地址,保存后即可免费观看): ​​https://pan.quark.cn/s/3ceeb9ae6d98​​ 在汇编语言的世界中,内存管理和寻址方式是构建程序的基础。理解这些概念不仅对于编写高效的汇编代码至关重要,也是进行逆向工程分析的关键技能。本文将深入探讨内存管理的基本原则和多种寻址方式,并通过代码案例来展示它们的实际应用。 1. 内存管理 内存管理涉及如何分配

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite

HTML文档插入JS代码的几种方法

在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内联,放置在< script>和标签对之间。 2.放置在由< script>标签的src属性指定的外部文件中。 3.放置在HTML事件处理程序中,该事件处理程序由onclick或onmouseover这样的HTML属性值指定。 4.放在一个URL里,这个URL使用特殊的“javascript:”协议。 在JS编程中,主张

OSG学习:LOD、数据分页、动态调度

LOD(level of detail):是指根据物体模型的结点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。在OSG的场景结点组织结构中,专门提供了场景结点osg::LOD来表达不同的细节层次模型。其中,osg::LOD结点作为父节点,每个子节点作为一个细节层次,设置不同的视域,在不同的视域下显示相应的子节点。 数据分页:在城市

js 正则表达式出现问题

帮同事写个页面,出现正则表达式不管怎么改都没法匹配的情况。。。。 reg = /^sy[0-9]+$/i; if(rtx.match(reg) == null){ alert("请输入正确的RTX账号!"); return false; } 因为之前一直用的是 reg ="/^sy[0-9]+$/i"; 写PHP写习惯了。。外面多写了两个双引号……T.T 改

bootstrap和JS相关

下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。 bootstrap 显示隐藏div $('.show-info').click(function () {var show = $(this).data('show');if(show =='all'){$('#creative').show();$('#plan').show();$('#plan').attr('class','