某乎登录加密分析第二弹

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 某乎登录加密分析第二弹
项目地址:aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbj9uZXh0PSUyRg==

观前提示:

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



 前言

我发的第一篇文章[2020-7-29]新版某乎Js逆向分析 中讲到了sign_in的加密

其中我面对检测我是直接改写代码来拿到正确的结果的 虽然能达到想要的效果 但是 我不满意 在昨天群里聊天的时候 聊到Navigator的检测 我顿时想到了顶象的检测 茅塞顿开 就一步一步调试 最终 找到了坑人的点



 分析

在解密点下输出桩 得到以下结果

JSmain1:335 解密: __g
JSmain1:335 解密: _encrypt
JSmain1:335 解密: window
JSmain1:335 解密: undefined
JSmain1:335 解密: window
JSmain1:335 解密: navigator
JSmain1:335 解密: Object
JSmain1:335 解密: name
JSmain1:335 解密: nodejs
JSmain1:335 解密: userAgent
JSmain1:335 解密: headless
JSmain1:335 解密: userAgent
JSmain1:335 解密: toLowerCase
JSmain1:335 解密: indexOf
JSmain1:335 解密: callPhantom
JSmain1:335 解密: _phantom
JSmain1:335 解密: __phantomas
JSmain1:335 解密: buffer
JSmain1:335 解密: Buffer
JSmain1:335 解密: emit
JSmain1:335 解密: spawn
JSmain1:335 解密: webdriver
JSmain1:335 解密: domAutomation
JSmain1:335 解密: domAutomationController
JSmain1:335 解密: getOwnPropertyDescriptor
JSmain1:335 解密: userAgent
JSmain1:335 解密: getOwnPropertyDescriptor
JSmain1:335 解密: webdriver
JSmain1:335 解密: getOwnPropertyDescriptor
JSmain1:335 解密: [native code]
JSmain1:335 解密: getOwnPropertyDescriptor
JSmain1:335 解密: Function
JSmain1:335 解密: prototype
JSmain1:335 解密: toString
JSmain1:335 解密: call
JSmain1:335 解密: indexOf
JSmain1:335 解密: 
JSmain1:335 解密: length
JSmain1:335 解密: RuPtXwxpThIZ0qyz_9fYLCOV8B1mMGKs7UnFHgN3iDaWAJE-Qrk2ecSo6bjd4vl5
JSmain1:335 解密: length
JSmain1:335 解密: charCodeAt
JSmain1:335 解密: charAt

可以看到 检测是一些东西的 然后我们的常规做法就是补齐了对吧

window={};
window.name="";
window.navigator={
    userAgent:"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400"
}

当我们补完这个环境 然后运行结果的时候就会发现 我怎么都拿不到正确的结果 那么 恭喜你 踩坑了  接着 细听我慢慢道来


首先 我找到一处解密赋值的位置插装 然后运行对比

浏览器

node

通过对比可知

在这个 userAgent 后面 俩个环境运行出的结果不一致

那我们就找到判断下断点看看

if(k(e.b[this.h])=="userAgent"){
            debugger;
        }

俩边都是下 debugger 运行操作

接着就是俩边F11的对比了


到了 e.r[this.s][r](o[0], o[1]) 的位置 发现运行结果不一样了

浏览器

node

这就很奇怪了 为啥 俩边都是拿 userAgent 一个有值 一个就没有呢?

这就是知乎的坑了

首先我们要了解一下 Object.getOwnPropertyDescriptor


这个还看不懂?

这个是浏览器的navigator

这个是我们自己构造的navigator

navigator={
    userAgent:"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400"
};

看起来一样吗?其实并不然

差别明显就出来了上面的是浏览器的 下面是我们自己构造的

它就是通过 getOwnPropertyDescriptor 来判断你是不是构造的

那我们要怎么构造呢?其实也是很简单的

根据我们测试这个方法可行 那应用不也就简简单单嘛

var Navigator = function() {};
Navigator.prototype = {
    userAgent: "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0",
};
window.navigator = new Navigator;



 运行结果

浏览器


node

完美~补个头就能拿到正确结果啦




[完]



相关文章
|
3月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
3月前
|
存储 算法 Java
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
这篇文章详细介绍了在Java项目中如何使用MD5算法对用户密码进行加密存储和登录验证,包括加入依赖、编写MD5工具类、注册时的密码加密和登录时的密码验证等步骤,并通过示例代码和数据库存储信息展示了测试效果。
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
|
3月前
|
数据采集 数据可视化 数据挖掘
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
本文介绍了一个基于Python和Django框架,使用Scrapy进行去哪儿网数据采集与分析的项目,包括实现登录注册功能、MD5加密以及通过可视化大屏展示分析结果的综合系统。
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
5月前
|
人工智能 监控 安全
未来金融将如何借助加密货币发展,可以从以下几个方面进行清晰的分析和归纳
**区块链与加密货币推动金融革命:降低交易成本,提高安全,扩大服务范围,赋能智能合约与DeFi,及改变监管方式。加密经济助力金融效率与普惠性,但也伴随风险,需平衡发展与监管。**
|
5月前
|
存储 SQL 安全
网络安全与信息安全:漏洞分析与加密技术探讨
在当今数字化时代,网络安全与信息安全日益成为全球关注的焦点。本文深入探讨了网络安全中的常见漏洞类型及其影响,并介绍了当前流行的加密技术和提升安全意识的方法,旨在为读者提供系统的知识分享与技术探讨。
50 3
|
6月前
|
前端开发 算法 JavaScript
实现注册登录时数据的加密传输(含前后端具体代码)
实现注册登录时数据的加密传输(含前后端具体代码)
|
6月前
|
算法 前端开发 JavaScript
SpringBoot+随机盐值+双重MD5实现加密登录
SpringBoot+随机盐值+双重MD5实现加密登录
603 1
|
6月前
|
存储 前端开发 算法
加密算法在网络通信中的应用及优势分析
本文将探讨加密算法在网络通信中的重要性,以及不同加密算法的应用和优势。通过对前端、后端、Java、Python、C、PHP、Go等多种技术的分析,我们将了解在日益增长的网络威胁下,加密算法对于确保数据安全和隐私保护的必要性。
|
3天前
|
SQL 安全 测试技术
网络安全的盾牌与剑——漏洞防御与加密技术解析
【10月更文挑战第28天】 在数字时代的浪潮中,网络空间安全成为我们不可忽视的战场。本文将深入探讨网络安全的核心问题,包括常见的网络安全漏洞、先进的加密技术以及提升个人和组织的安全意识。通过实际案例分析和代码示例,我们将揭示黑客如何利用漏洞进行攻击,展示如何使用加密技术保护数据,并强调培养网络安全意识的重要性。让我们一同揭开网络安全的神秘面纱,为打造更加坚固的数字防线做好准备。
17 3