md5绕过

文章目录

    • \=\=和\=\=\=
    • md5数组绕过
    • 科学计数法绕过
    • 双md加密
    • md5碰撞
    • Hash长度攻击

下面会以同一道题给大家演示:
(题目来源与nssctf)
在这里插入图片描述

==和===

在php代码中我们会看到==和===,虽然两个都是表示相等,但是在细节上会有所部区别

==:是弱比较,只比较结果,不比较数据类型。
===:是强比较,不仅会比较结果,也会比较数据类型。

md5数组绕过

原理:

由于md5不能加密数组,在加密数组的时候会返回NULL。

如果是我们传入的两个参数相等,我们可以传入两个数组,判断条件就成为NULL=NULL,这样就可以绕过判断。

在这里插入图片描述
题目只需要两个不同的值,md5加密后相同就可以。传入数组,两个不同,并且加密都为NULL,相等。
这样的题目需要注意等号,如果是==,可以一个是数组,一个是整型,但是为===,就必须都是整型,或者都是数组。

科学计数法绕过

原理:

可以传入两个md5加密后是0e开头的字符串,但这个以0e开头的字符串只能是纯数字,这样php在进行科学计算法的时候会将它转化为0。

同样是上面那道题:
在这里插入图片描述
传入两个md5后都是0e开头的纯数字,变为0=0。
这里可以收集一些网上的字符串,没有必要每次都自己去写脚本跑。

s878926199a
s155964671a
s214587387a
s214587387a
s878926199a
s1091221200a
s1885207154a
240610708
314282422
571579406
903251147
QNKCDZO
240610708
314282422
s878926199a
s155964671a
s214587387a
s214587387a

双md加密

正常的方法当然是写脚本去跑,但是做题的时候遇到了,肯定可以收集一下呀。
md和md5后都是0e开头的字符串:

CbDLytmyGm2xQyaLNhWn
770hQgrBOjrcqftrlaZk
7r4lGXCH2Ksu2JNT3BYM

md5碰撞

对于md5加密的我们也可以使用md5碰撞产生相等的值。
这里使用了工具fastcoll。下载的地址:

https://github.com/iamjazz/Md5collision?tab=readme-ov-file

下载压缩包解压就可以了。
然后使用的话,对着项目里的文档就可以。
同样是开头那道题:

1.首先新建init.txt文档,然后随便输入一点东西,我输入的是123456
2.然后执行 fastcoll_v1.0.0.5.exe -p init.txt -o 1.txt 2.txt

在这里插入图片描述
此时会在目录下生成1.txt和2.txt。
接着将Md5collision.php放在php环境中运行,注意因为要打开1.txt和2.txt,所以不要把Md5collision.php文件单独拖到php环境运行,可以直接将整个文件夹放入运行
在这里插入图片描述
这里我们可以看到生成的md5字符串。看着相似,但是中间是有所不同的。利用bp传入数据,可以得到flag
在这里插入图片描述

Hash长度攻击

使用:hashpump
一个值等于一个拼接的字符串的md5值,有长度要求
且拼接的字符串值等于一个已知字符串加上一个未知字符串,

hashpump直接根据提示传入相关数据,就会自动生成payload。
注:记得将/x换成%00

2023年楚慧杯的web题中考到了这个点,网上有wp。

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

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

相关文章

js 实现点击按钮小球加入购物车动画

本文旨在实现类似点击按钮实现小球加入购物车效果。 使用技术: Vue2使用 Pubsub 监听按钮点击事件(如果不想用也可以自己改造下)监听 onmousemove 来获取按钮点击时的鼠标位置 小球组件: html css: 小球父元素&am…

品牌如何玩转饥饿营销?媒介盒子分享

饥饿营销是许多品牌都会用的策略,从“限定发售”、“先到先得”、“季节限定”、“专属VIP”等都属于饥饿营销的范畴,为什么饥饿营销屡试不爽,原因就在于人们面对同等的收益和损失时,损失会令他们更加难以接受。今天媒介盒子就来和…

奖励建模(Reward Modeling)实现人类对智能体的反馈

奖励建模(Reward Modeling)是强化学习中的一个重要概念和技术,它主要用于训练智能体(如AI机器人或大型语言模型)如何更有效地学习和遵循人类期望的行为。在强化学习环境中,智能体通过尝试不同的行为获得环境…

电机控制系列模块解析(第八篇)—— 高频注入法

一、基本原理 在电机控制领域,高频方波注入法常用于估计转子的位置和转速。其工作原理是每隔一定的时间间隔在电机输出电压上叠加一个电压脉冲。然后,在两相静止坐标系下或者同步旋转坐标系下对采样时刻的电压和电流进行相应的计算,以实现对…

深入理解并发编程:解锁现代软件性能的关键

在当今快速发展的软件开发世界中,并发编程已经成为一种无法回避的重要议题。它涉及到如何在同一时间内处理多个任务,以此来提升应用程序的性能和响应速度。互联网服务的高并发需求以及多核处理器的普及使得并发编程成为了现代软件工程的一个核心组成部分…

如何使用python处理高光谱数据004-卷积神经网络

多光谱数据是指从不同波段的传感器中收集的数据。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,适用于处理图像和空间数据。 在多光谱数据中,每个波段代表了一种特定的光谱信息。卷积神经网络可以通过学习特征映射来识别不同波段之间的关系,并从中…

王道机试C++第 4 章 字符串:字符串内容详解及三个小程序 Day29

第 4 章 字符串 本章介绍一种基础数据类型——字符串,并且介绍一些字符串处理的方法及字符串匹配的方法。虽然字符串的内容非常基础,但是十分重要。希望读者能够好好学习本章的内容,为此后的学习打下良好的基础。 4.1 字符串内容详解 由于 …

Java的 Map以及实现一个简单的红黑树

Map是Java中的一种键值对(Key-Value)数据结构,它提供了高效的键值对的存储和访问。在Java中,常见的Map实现类有HashMap、LinkedHashMap和TreeMap等。这些实现类在底层使用不同的数据结构来存储键值对,以提供不同的性能…

STM32CubeIDE基础学习-相关工程文件介绍

STM32CubeIDE基础学习-相关工程文件介绍 前言 保存的工程要大致了解熟悉里面的文件代表的是什么意思、干什么用的,这样才方便后面使用或移植代码等。 当成功创建工程后,打开基础工程保存路径后可以看到所有文件如下图所示: 如果工程越复杂&a…

15. C++泛型与符号重载

【泛型编程】 若多组类型不同的数据需要使用相同的代码处理,在C语言中需要编写多组代码分别处理,这样做显然太过繁琐,C增加了虚拟类型,使用虚拟类型可以实现一组代码处理多种类型的数据。 虚拟类型是暂时不确定的数据类型&#…

CN错题1

千兆以太网的MAC子层仍然使用 CSMA/CD , 支持半双工 和 全双工通信 。 与INTERNET 连接有 局域网 和 拨号上网 两种方式。 在计算机网络中,服务器提供的共享资源主要是指 硬件 、软件 和 数据库 资源。 在局域网中,硬件地址又称为 MAC地址 或 物理地址 报…

Vue事件处理:.passive修饰符与应用场景

.passive修饰符 passive这个修饰符会执行默认方法。你们可能会问,明明默认执行为什么会设置这样一个修饰符。这就要说一下这个修饰符的本意了。 浏览器只有等内核线程执行到事件监听器对应的JavaScript代码时,才能知道内部是否会调用preventDefa…