送书|逆向系列-你一定要懂的MD5加密

2024-04-17 06:58

本文主要是介绍送书|逆向系列-你一定要懂的MD5加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

逆向的步骤

逆向的步骤主要包含以下几点:

  • 抓包

    抓包的过程其实很简单,在学爬虫入门的时候,想必这是每一个同学都必学的一个阶段。打开开发者调试工具,刷新页面,即可在network面板查看到加载出来的数据包。

  • 调试

    当找到目标数据包时,根据目标数据包form data中的关键字参数进行全局查找,便基本上可以查找到目标参数所在的js文件,通过断点的方式即可查找到目标值。注意:这仅仅只是针对大多数网站的方式。

  • 扣取js

    当找到目标参数的值的生成方式时,便需要通过方法栈的跟踪找到目标参数生成值的方法即可,并将js代码复制出来并运行代码即可。

  • 改写js

    有时候,扣去下来的js代码存在不规范,需要进行简单的修改。这一点需要各位同学熟悉js的代码。

  • 本地运行代码

    当做完上述的步骤之后,便可以将代码复制出来在本地运行出结果与已知结果相同即可。

常见的加密方法

MD系列

MD系列中有三种加密方式:MD5、MD4、MD2。

关于MD系列中重点讲解的内容就是MD5,不论是多长的字符串均能加密成32位或16位字符。MD5编码是由数字与字母组成,因此看到位数以及字母组成形式的字符可以迅速判断可能是MD5编码。

MD5编码具有不可逆的特点,明文可以被加密成密文,但是无法根据密文以及加密方式反推明文,极大的保证了安全性。但是目前有不少在线解密MD5的网站,它是怎么样做的呢?

其实很简单,它将常见的明文加密成MD5密文的形式,将所得结果保存起来,当需要查询的时候进行匹配即可。其实这种方法就类似于暴力破解。

个人经验之谈

关于MD5的加密,我说一下个人的经验一般来说它会在账号与密码登陆的时候动手脚。(对于一部分网站)

我们在输入密码的时候会采用123456,方便我们记忆。

为什么这样说呢?

因为123456所对应的16位和32位MD5字符串分别是:

49ba59abbe56e057 #16位
e10adc3949ba59abbe56e057f20f883e # 32位

这一点我们需要熟记,123456的16位密文是49开头,而32位123456的密文是e10开头。当在数据包中发现此类信息是即可判断。

另一点就是程序员一般都不会没事找事干。加密函数与加密参数都是放在同一个js文件中,如果实在是找不到也没有关系,可以考虑采用方法栈的跟踪进行查找。

今日网站

aHR0cHM6Ly93d3cuc29odS5jb20v

本次网站主要是考虑是如何破解登陆上的MD5加密,和开始所写的内容相同,一定要按照逆向的步骤进行操作。

首先先进行抓包操作:

bda9e6c9118efc9a7f09121b0e5d4a8f.png

如上图所示,我输入的密码是123456,它也给我通过,只是点击登陆的时候会显示密码或账号错误。有些网站是不会通过123456这种密码的,那么如果不通过的话,就要考虑换一个复杂一点的即可。

d42c2a68026fea7d8ae2fe1caa7d1524.png

大家来看一下,这是不是就是我们要查找的数据包呀?

很明显,当我们看到password的值时是否就能联想到刚刚所描述的加密方式的特点呢?相信各位同学都已经心中有数了吧!

form data里面的参数都是我们可以进行搜索的内容,比如说:userid、password、persistentCookie等等,或者是最上方的url里面的值也有可能是我们要进行全局搜索的内容哦。

e9f7f469abe672a06578caf52ff3ae65.png

为了节省时间,我们就直接对password进行全局搜索。

7c6d8d3d67bd6fd3a39a949c1c757bce.png

经过搜索之后,我们从图中可以发现,出现的结果还是蛮多的。但是大家有没有想过一个问题,那就是MD5加密的值是怎么样传递给password的呢?一般来说是不是对象.password = xxx这样的形式来传递的呢?因此搜索方式可以修改为password=:6dd12cfc39e8a5f1ce090791eebf6d99.png

在password的后面我没有加上空格,因为现在所搜索的内容是没有经过格式化的,如果格式化代码之后,那么在password的后面就必须要加上空格了。(这一点要注意)

从上图可以看出,所搜结果又被过滤掉了很多,只剩下其中一个了,这正合我意。

b7ee78935f0082699d1d4b27a28b6218.png

当进入这个js文件之后,再将password搜索一遍,可以看到password的结果有4个。

接下来便在此行打上断点,来跟踪加密函数。从上面的图中可以发现它是通过utils对象生成的加密参数。

c3650091717b80de1a8e503739bf4101.png

打上断点之后,可以发现这个确实是我们需要查找的内容,经过上面的分析,接下来便要查找utils关键字。

0f051c8fb760dc22511a08a499924e4a.png

经过搜索发现,在当前的js代码中确实是存在utils关键字,看上去也是一个对象,那这就刚刚好验证了我们刚才所描述的内容了。

在这里也分享一下我扣取js代码的经验:

可以先将JS代码全部复制下来到本地,因为在浏览器中括号无法将成对展现,但是在本地文件中是可以成对出现,方便扣取的时候,不会少了括号或者是代码而报错。

将utils代码扣去下来之后,便将其进行运行出结果即可。

e911dc670ebc8c6e2a29c6d8ed327e75.png

至此,关于MD5的加密逆向就讲解到这里了。

更多精彩内容,期待下次再见!!!

送书

本周送上这本翘首以待的《Python 3网络爬虫开发实战(第2版)》!相比第一版这本书内容更全面,章节设置更易读者学习。

c751178edf29630c723ff5f266adbd10.png

本书介绍了如何利用 Python 3 开发网络爬虫。本书相比于第 1 版,作者为每个知识点的实战项目配备了针对性的练习平台,避免了案例过期的问题。另外,主要增加了异步爬虫、JavaScript 逆向、App 逆向、页面智能解析、深度学习识别验证码、Kubernetes 运维及部署等知识点,同时也对各个爬虫知识点涉及的请求、存储、解析、测试等工具都进行了丰富和更新。

1b5053f3ca53fa16f4177686ea527048.png

公众号回复:送书 ,参与抽奖(共3本)

点击下方回复:送书  即可!

大家如果有什么建议,欢迎扫一扫二维码私聊小编~

回复:加群 可加入Python技术交流群

3bd3693227fbec1cc10e2d357b03ca50.png

这篇关于送书|逆向系列-你一定要懂的MD5加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma