psSign、random推导

news/2025/1/16 11:53:58/文章来源:https://www.cnblogs.com/Gimm/p/18674667

入口:
image

传递的参数值:
image

sign函数

function() {var _0x36c5d3 = _0x79c1ce;let _0x479298 = arguments[_0x36c5d3(0x5a9, 'PHXL')] > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : {};try {var _0x1a6f66;if (!_0x32d6a8[_0x36c5d3(0x4d7, 'l!Uo')][_0x36c5d3(0x3a7, 'yS(K')]) return _0x347d76[_0x36c5d3(0x514, 'j7Mt')][_0x36c5d3(0x323, 'a$#V')](_0x36c5d3(0x543, 'XEk5'), {'reason': _0x36c5d3(0x56a, 'an)q')}),Promise[_0x36c5d3(0x3cd, 'aSrl')]({});const _0x48393f = (0x0, _0xbae138[_0x36c5d3(0x5fd, 't[mc')])(),_0x4085c6 = '' [_0x36c5d3(0x536, 'J0hY')](Date[_0x36c5d3(0x37b, 'aO!D')]());let _0x3a0e53 = _0x479298;_0x36c5d3(0x230, 'R90F') != typeof _0x479298 && (_0x3a0e53 = {});const _0x209c05 = _0x4438f3(_0x4438f3({},_0x3a0e53), {},{'random': _0x48393f,'timestamp': _0x4085c6}),_0x2c4733 = JSON[_0x36c5d3(0x44c, '3z04')](_0x209c05) + (0x0, _0x167d7d[_0x36c5d3(0x5a5, 'hjcQ')])();return (null === (_0x1a6f66 = (0x0, _0x438ffe[_0x36c5d3(0x40b, 'J0hY')])(_0x2c4733)) || void 0x0 === _0x1a6f66 ? void 0x0: _0x1a6f66[_0x36c5d3(0x44d, '$@]b')](function(_0x1eacf4) {return {'pcSign': _0x1eacf4 || '','random': _0x48393f,'timestamp': _0x4085c6};})) || Promise[_0x36c5d3(0x266, 'aO!D')]({});} catch(_0x51361c) {return _0x347d76[_0x36c5d3(0x57d, 'PR!R')][_0x36c5d3(0x4b0, 'JEGu')](_0x36c5d3(0x21d, 'UAr['), {'reason': '' [_0x36c5d3(0x4de, 'gf^x')](_0x51361c)}),Promise[_0x36c5d3(0x629, '7n#R')]({});}
}

定位security.SDK.umd.js

            _0x10bdff[_0x79c1ce(0x475, '[wa(')] = function() {var _0x36c5d3 = _0x79c1ce;let _0x479298 = arguments[_0x36c5d3(0x5a9, 'PHXL')] > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : {};try {var _0x1a6f66;if (!_0x32d6a8[_0x36c5d3(0x4d7, 'l!Uo')][_0x36c5d3(0x3a7, 'yS(K')])return _0x347d76[_0x36c5d3(0x514, 'j7Mt')][_0x36c5d3(0x323, 'a$#V')](_0x36c5d3(0x543, 'XEk5'), {'reason': _0x36c5d3(0x56a, 'an)q')}),Promise[_0x36c5d3(0x3cd, 'aSrl')]({});const _0x48393f = (0x0,_0xbae138[_0x36c5d3(0x5fd, 't[mc')])(), _0x4085c6 = ''[_0x36c5d3(0x536, 'J0hY')](Date[_0x36c5d3(0x37b, 'aO!D')]());let _0x3a0e53 = _0x479298;_0x36c5d3(0x230, 'R90F') != typeof _0x479298 && (_0x3a0e53 = {});const _0x209c05 = _0x4438f3(_0x4438f3({}, _0x3a0e53), {}, {'random': _0x48393f,'timestamp': _0x4085c6}), _0x2c4733 = JSON[_0x36c5d3(0x44c, '3z04')](_0x209c05) + (0x0,_0x167d7d[_0x36c5d3(0x5a5, 'hjcQ')])();return (null === (_0x1a6f66 = (0x0,_0x438ffe[_0x36c5d3(0x40b, 'J0hY')])(_0x2c4733)) || void 0x0 === _0x1a6f66 ? void 0x0 : _0x1a6f66[_0x36c5d3(0x44d, '$@]b')](function(_0x1eacf4) {return {'pcSign': _0x1eacf4 || '','random': _0x48393f,'timestamp': _0x4085c6};})) || Promise[_0x36c5d3(0x266, 'aO!D')]({});} catch (_0x51361c) {return _0x347d76[_0x36c5d3(0x57d, 'PR!R')][_0x36c5d3(0x4b0, 'JEGu')](_0x36c5d3(0x21d, 'UAr['), {'reason': ''[_0x36c5d3(0x4de, 'gf^x')](_0x51361c)}),Promise[_0x36c5d3(0x629, '7n#R')]({});}};const _0x32d6a8 = _0x535b3(0x53), _0xbae138 = _0x535b3(0xfd), _0x167d7d = _0x535b3(0x3ba), _0x438ffe = _0x535b3(0x1b5), _0x347d76 = _0x535b3(0x2a4);},

打断点调试
1.
image
image
image

image

此时拿到random(_0x48393f)的值

const _0x48393f = (0x0,_0xbae138[_0x36c5d3(0x5fd, 't[mc')])(), _0x4085c6 = ''[_0x36c5d3(0x536, 'J0hY')](Date[_0x36c5d3(0x37b, 'aO!D')]());

根据上述函数,已知函数标量_0x36c5d3
image

function(_0x457ace, _0x349832) {_0x457ace = _0x457ace - 0x18a;var _0x4c6e1a = _0x19971f[_0x457ace];if (a0_0x457a['pIaRKj'] === undefined) {var _0x2a073e = function(_0x3f86c9) {var _0x153ef8 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x6873a5 = '',_0x41c8da = '';for (var _0x5c7b8d = 0x0,_0x27fa83, _0x3f32c6, _0xef38ce = 0x0; _0x3f32c6 = _0x3f86c9['charAt'](_0xef38ce++);~_0x3f32c6 && (_0x27fa83 = _0x5c7b8d % 0x4 ? _0x27fa83 * 0x40 + _0x3f32c6: _0x3f32c6, _0x5c7b8d++%0x4) ? _0x6873a5 += String['fromCharCode'](0xff & _0x27fa83 >> ( - 0x2 * _0x5c7b8d & 0x6)) : 0x0) {_0x3f32c6 = _0x153ef8['indexOf'](_0x3f32c6);}for (var _0x56ffc6 = 0x0,_0x2026b1 = _0x6873a5['length']; _0x56ffc6 < _0x2026b1; _0x56ffc6++) {_0x41c8da += '%' + ('00' + _0x6873a5['charCodeAt'](_0x56ffc6)['toString'](0x10))['slice']( - 0x2);}return decodeURIComponent(_0x41c8da);};var _0x384326 = function(_0x5a7df8, _0x68a587) {var _0x46b693 = [],_0xb659b6 = 0x0,_0x38697a,_0x299539 = '';_0x5a7df8 = _0x2a073e(_0x5a7df8);var _0x3b9660;for (_0x3b9660 = 0x0; _0x3b9660 < 0x100; _0x3b9660++) {_0x46b693[_0x3b9660] = _0x3b9660;}for (_0x3b9660 = 0x0; _0x3b9660 < 0x100; _0x3b9660++) {_0xb659b6 = (_0xb659b6 + _0x46b693[_0x3b9660] + _0x68a587['charCodeAt'](_0x3b9660 % _0x68a587['length'])) % 0x100,_0x38697a = _0x46b693[_0x3b9660],_0x46b693[_0x3b9660] = _0x46b693[_0xb659b6],_0x46b693[_0xb659b6] = _0x38697a;}_0x3b9660 = 0x0,_0xb659b6 = 0x0;for (var _0x271a01 = 0x0; _0x271a01 < _0x5a7df8['length']; _0x271a01++) {_0x3b9660 = (_0x3b9660 + 0x1) % 0x100,_0xb659b6 = (_0xb659b6 + _0x46b693[_0x3b9660]) % 0x100,_0x38697a = _0x46b693[_0x3b9660],_0x46b693[_0x3b9660] = _0x46b693[_0xb659b6],_0x46b693[_0xb659b6] = _0x38697a,_0x299539 += String['fromCharCode'](_0x5a7df8['charCodeAt'](_0x271a01) ^ _0x46b693[(_0x46b693[_0x3b9660] + _0x46b693[_0xb659b6]) % 0x100]);}return _0x299539;};a0_0x457a['mlzgZn'] = _0x384326,_0x348322 = arguments,a0_0x457a['pIaRKj'] = !![];}var _0x2a2c40 = _0x19971f[0x0],_0x17806e = _0x457ace + _0x2a2c40,_0x4fed40 = _0x348322[_0x17806e];return ! _0x4fed40 ? (a0_0x457a['kveOFi'] === undefined && (a0_0x457a['kveOFi'] = !![]), _0x4c6e1a = a0_0x457a['mlzgZn'](_0x4c6e1a, _0x349832), _0x348322[_0x17806e] = _0x4c6e1a) : _0x4c6e1a = _0x4fed40,_0x4c6e1a;
}

拆解0x48393f构成
image
image

image

  1. 解析_0x4085c6的生成
 _0x4085c6 = ''[_0x36c5d3(0x536, 'J0hY')](Date[_0x36c5d3(0x37b, 'aO!D')]())

image

继续对function(_0x457ace, _0x349832),即_0x36c5d3函数打断点
image
image

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/870073.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试中如何反编译JAR

反编译是渗透测试中的重要环节之一。 通过反编译,我们可以得到程序的项目结构、相关资源以及配置的数据库等信息。 本文以常见SpringBoot项目为例,对其进行反编译。 Spring Boot 是一个基于 Spring 的框架,旨在简化 Spring 应用的配置和开发过程,通过自动配置和约定大于配置…

专项训练2

贪心专题 1. [NOIP2015 普及组] 推销员 link:https://www.luogu.com.cn/problem/P2672 思路跟正解大差不差,但想的有点复杂了。先把所有的按疲劳值排个序,(这样省却了找最大疲劳值的过程),然后只用考虑第x大的和后面距离+疲劳值最大值的比较即可(累了,不想写了) 2. Tw…

vue2子组件获取父组件的实例以及数据,vue2子组件获取父组件的数据

多个组件引入同一个js文件,实例化对象,数据不会错乱,再引入相同的组件,例如每个页面都需要引入到一个分页组件,然后分页组件需要获取各自父组件中的实例对象 通过 this.$parent 即可获取到父组件中的数据 所以在使用子组件时可以不用在组件上传入数据 公共js文件functi…

专利申请审批流程

依据专利法,发明专利申请的审批程序包括受理、初审、公布、实审以及授权五个阶段。实用新型或者外观设计专利申请在审批中不进行早期公布和实质审查,只有受理、初审和授权三个阶段。 发明、实用新型和外观设计专利的申请、审查流程图如下:

深入理解第二范式(2NF):提升数据库设计的有效性与灵活性

title: 深入理解第二范式(2NF):提升数据库设计的有效性与灵活性 date: 2025/1/16 updated: 2025/1/16 author: cmdragon excerpt: 数据库的规范化是确保数据完整性和消除数据冗余的关键过程。第二范式(2NF)是关系数据库设计中的重要概念,进一步建立在第一范式的基础之上…

【附源码】JAVA课程管理系统源码+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:课程管理系统 。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 系统测试截图系统视频演示https://githubs.xyz/show/342.mp4二. 系统概述【 系统功能…

【YashanDB知识库】解压安装包时报错tar:Error is not recoverable

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7919233.html?templateId=1718516 现象 解压安装时报如下错误:、分析过程 1、检查解包命令是否正确 tar --help 2、查询CPU类型(arm/x86,32bit/64bit)是否与包匹配 lscpu3、检查MD5值, md5sum 再下…

多校区管理难题:管理工具的高效解决方案

一、连锁培训机构的管理挑战 多校区数据同步难题连锁机构需要实时掌握各校区的学员、教师、财务等数据,而传统的手工记录或独立系统难以满足这一需求。 跨校区资源协作障碍教室、师资和课程安排在不同校区间分配时,容易产生冲突或资源浪费。 信息孤岛现象各校区独立运作的模式…

宝塔面板无法访问怎么办?

宝塔面板是许多用户管理和维护服务器的重要工具。当遇到宝塔面板无法访问的情况时,可能是由于多种原因引起的。以下是一些常见问题及其解决方案: 一、检查网络连接本地网络环境:确保您的本地网络连接正常,尝试访问其他网站以确认是否是网络问题。服务器网络状态:登录云服务…

为什么设置了自定义错误页面后无法登录网站后台?

设置自定义错误页面后无法登录网站后台是一个常见的问题,通常由配置不当或冲突引起。要解决这个问题,我们需要仔细检查相关配置文件,并确保各个组件之间的兼容性。以下是详细的排查和解决方法: 一、检查自定义错误页面配置配置文件位置:根据服务器类型,自定义错误页面的配…

请问如何解决网站返回404页面的问题?

关于网站返回404页面的问题,我们为您提供详细的解决方案。404错误表示用户尝试访问的网页不存在或已被删除。这种问题可能由多种原因引起,包括链接配置错误、文件路径更改、服务器配置不当等。以下是排查和解决404错误的步骤:检查URL链接:首先,确认您输入的URL是否正确。有…

如何解决数据库页面无法打开的问题

如果您遇到数据库页面无法打开的问题,可以按照以下步骤进行排查和处理:检查远程密码:首先,确认提供的服务器远程密码是否正确。如果密码错误,请重新核实并提供正确的密码。 如果您忘记了密码,联系技术支持团队协助重置密码。更换PHP版本:检查当前使用的PHP版本是否与数据…