关于md5强比较和弱比较绕过的实验

news2025/1/10 23:19:14

在ctf比赛题中我们的md5强弱比较的绕过题型很多,大部分都是结合了PHP来进行一个考核。这一篇文章我将讲解一下最基础的绕过知识。

MD5弱比较

比较的步骤

在进行弱比较时,PHP会按照以下步骤执行:

  1. 确定数据类型:检查参与比较的两个值的数据类型。
  2. 自动类型转换:根据比较的类型自动转换值。例如,如果两个值有不同类型,PHP会尝试将它们转换为相同的类型。
  3. 执行比较:在转换后,进行实际的比较

给出一个简单的实例:

<?php
$a = "10"; // 字符串
$b = 10;   // 整数
var_dump($a == $b); // 输出 true

这里明显是不同的两种类型,我们知道两种不同类型是不能进行比较的,于是弱比较时自动将类型转变成同样的类型,然后可以进行一个比较。

第一类:(md5($a)==md5($b)&&$a!=$b)

在本地环境先写一个简单的实验代码:

<?php
$a=$_GET['$a'];
$b=$_GET['$b'];
if(md5($a)==md5($b)&&$a!=$b){
    echo '绕过成功';
}
else{
    echo '还得练';
}

绕过:

很简单,我们知道0的多少次方都为0,那么如果MD5加密之前的数据不同但是加密后数字值都为0的话那么不就能绕过了吗。

s155964671a

s214587387a

s1091221200a

s1885207154a

s1502113478a

s1885207154a

s1836677006a

s155964671a

s1184209335a

以下数据都是MD5加密后数值为0的字符串。

本地实验结果:

 第二类:($a==md5($a))

本地实验代码:

<?php
highlight_file("test.php");
$a=$_GET['$a'];
if($a==md5($a)){
    echo '绕过成功';
}
else{
    echo '还得练';
}

绕过:

我们依旧是需要利用我们的数值为0的特殊字符串来解题,那么在这里需要一个原来$a的数值为0且MD5加密后依旧为0的数。

0e215962017

0e1284838308

0e1137126905

0e730083352

0e807097110

实验结果:

MD5强比较

强比较通常指的是对两个MD5哈希值进行比较,以确定它们是否相同。

第一类: (md5($a)===md5($b) & $a != $b)

给出我们的实验代码:

<?php
include "test1.php";
highlight_file("test.php");
$a=$_GET['$a'];
$b=$_GET['$b'];
if(md5($a)===md5($b) & $a != $b){
    echo $test1;//test1内容是恭喜绕过
}
else{
    echo '还得练';
}

 强比较时比较的是MD5哈希值所有我们之前的数值绕过就不能使用了。

1.数组绕过:

可以看到我们的代码报错了,因为PHP对无法md5加密的东西不加密,结果为NULL,虽然会报错,但是null=null,逻辑关系为True,所以在开头输出了我们的结果。

2.特殊字符串

$a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

$b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2

$a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2 $b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2  

 

在ctf比赛题中我们的MD5绕过基本上是和其他的一些结合到一起的,作为最基础的一个绕过环节万变不离其宗,我们只要打好基础一切问题都可以很轻松的解决。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

要笑死了java

有一天&#xff0c;Java开发者Jack对他的朋友说&#xff1a;“最近我总感觉自己被逼得喘不过气。” 朋友问&#xff1a;“为什么啊&#xff1f;” Jack叹了口气道&#xff1a;“因为我一直在try里&#xff0c;但从来没有catch到过break&#xff01;” 为什么程序员总是分不清圣…

【Ubuntu】“Linux版PhotoShop”绘图软件的安装和汉化

【Ubuntu】“Linux版PhotoShop”绘图软件的安装和汉化 零、前言 最近换了Linux系统&#xff0c;但是写教程做PPT的时候还是得用到绘图软件&#xff0c;上网一查&#xff0c;总结对比之后发现Krita比较好用&#xff0c;故此讲解一下如何安装和汉化Krita。 壹、安装 安装很简…

spring 如何将mutipartFile转存到本地磁盘

两者的区别和联系 MutipartFile是spring的一部分&#xff0c;File则是java的标准类MutipartFile用于接收web传递的文件&#xff0c;File操作本地系统的文件 MutipartFile 转换File的三种方式 使用MutipartFile 自带的transferTo方法使用java自带的FileOutPutStream流使用java自…

AirServer v7.2.7 破解版 – iPhone屏幕镜像工具

AirServer v7.2.7 破解版 – iPhone屏幕镜像工具可以将你的Mac转变为一个通用的镜像接收器&#xff0c;除了无法接收Miracast外&#xff0c;你可以使用内置的AirPlay或Google Cast基于屏幕投影功能来镜像你的设备屏幕&#xff1b;一次一个或同时投影到AirServer。用户可以从任何…

基于stm32的HAL库的串口实现不定长中断(空闲中断)(四)

串口实现不定长中断&#xff08;空闲中断&#xff09; 目录 串口实现不定长中断&#xff08;空闲中断&#xff09; 1、串口头文件 2、串口初始化配置 3、msp公用的一个函数这里有三个串口&#xff0c;都会调用msp先进行一个判断 4、对接收数组进行清空 5、中断服务函数--…

HDLBits中文版,标准参考答案 | 3.2.5 Finite State Machines | 有限状态机(5)

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 20 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Q6b: FSM next-state logic | Q6b&#xff1a;FSM 下一状态逻辑 2 Q6c: FSM one-hot next-state logic | Q6c&#xff1a;FSM 独热下一状态逻辑 3 Q6: FSM 4 Q2a: FSM 5 Q2b…

R编程环境的搭建

【图书推荐】《R语言医学数据分析实践》-CSDN博客 R语言对编程环境的要求不高&#xff0c;可以在多种操作系统平台上运行&#xff0c;包括Windows、macOS和Linux。要运行R语言&#xff0c;需要安装R解释器。可以从R语言的官方网站下载和安装最新版本。R语言还需要一个集成开发…

【可答疑】基于51单片机的水位检测系统(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

postman变量,断言,参数化

环境变量 1.创建环境变量 正式环境是错误的&#xff0c;方便验证环境变化 2.在请求中添加变量 3.运行前选择环境变量 全局变量 能够在任何接口访问的变量 console中打印日志 console.log(responseBody);//将数据解析为json格式 var data JSON.parse(responseBody); conso…

HTML(七)表格

在HTML中&#xff0c;表格的标准形式如下&#xff1a; <table></table> 使用上面的语言&#xff0c;就已经生成了一个表格&#xff0c;只不过这个表格什么都没有 那么&#xff0c;该如何让表格存在东西呢&#xff1f; 首先&#xff0c;我们需要使用到<tr> …

sqli-labs less-26 空格绕过

空格绕过 过滤空格 用Tab代替空格%20 %09 %0a %0b %0c %0d %a0 //() 绕过空格注释符绕过//–%20//#–- -;%00; 空白字符绕过SQLite3 —— 0A,0D,0c,09,20 MYSQL 09,0A,0B,0B,0D,A0,20 PosgressSQL 0A,0D,0C,09,20 Oracle_11g 00,0A,0D,0C,09,20 MSSQL 01,02,03,04,05,06,07,…

python爬虫案例——selenium爬取淘宝商品信息,实现翻页抓取(14)

文章目录 1、任务目标2、网页分析3、代码编写3.1 代码分析3.2 完整代码1、任务目标 目标网站:淘宝(https://www.taobao.com/) 任务要求:通过selenium实现自动化抓取 淘宝美食 板块下的所有商品信息,并实现翻页抓取,最后以csv格式将数据保存至本地;如: 2、网页分析 首先…

Servlet[springmvc]的Servlet.init()引发异常

报错&#xff1a; 原因之一&#xff1a; web.xml配置文件中监听器导入依赖项错误

android——自定义控件(不停变化的textview、开关switch、动画效果的打勾)

一、从开始数字到结束数字&#xff0c;不断变化 import android.animation.TypeEvaluator; import android.animation.ValueAnimator; import android.content.Context; import android.util.AttributeSet; import android.view.animation.AccelerateDecelerateInterpolator;i…

OpenCV答题卡识别

文章目录 一、基本流程二、代码实现1.定义函数2.图像预处理&#xff08;1&#xff09;高斯模糊、边缘检测&#xff08;2&#xff09;轮廓检测&#xff08;3&#xff09;透视变换&#xff08;4&#xff09;阈值处理和轮廓检测 3.筛选和排序选项轮廓4.判断答案5.显示结果 三、总结…

ssm基于javaweb的数学竞赛网站的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 …

Redis 缓存预热,缓存雪崩,缓存击穿,缓存穿透

Spring-data-redis 说明&#xff1a; 在 SpringBoot2.x 之后&#xff0c;原来使用的jedis 被替换为了 lettuce jedis : 采用的直连&#xff0c;多个线程操作的话&#xff0c;是不安全的&#xff0c;如果想要避免不安全的&#xff0c;使用 jedis pool 连接池 lettuce : 采用n…

云计算(第二阶段):mysql后的shell

第一章&#xff1a;变量 前言 什么是shell Shell 是一种提供用户与操作系统内核交互的工具&#xff0c;它接受用户输入的命令&#xff0c;解释后交给操作系统去执行。它不仅可以作为命令解释器&#xff0c;还可以通过脚本完成一系列自动化任务。 shell的特点 跨平台&#xff1a…

【LeetCode】动态规划—124. 二叉树中的最大路径和(附完整Python/C++代码)

动态规划—124. 二叉树中的最大路径和 题目描述前言基本思路1. 问题定义路径的限制&#xff1a; 2. 理解问题和递推关系核心思路&#xff1a;状态定义&#xff1a;递归公式&#xff1a; 3. 解决方法递归 动态规划方法伪代码&#xff1a; 4. 进一步优化5. 小总结 Python代码Pyt…

安装GraphRAG

安装GraphRAG 本文没有安装成功&#xff0c;一直卡在构建图节点。 我用的思路是GraphRAGOllama&#xff08;大语言模型&#xff09;Xinference&#xff08;词嵌入&#xff09;。找到的其他思路是&#xff0c;修改源码。 1 简介 1.1 GraphRAG GraphRAG是微软开源的一种基于…