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

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

MD5弱比较

比较的步骤

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

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

给出一个简单的实例:

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

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

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

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

php 复制代码
<?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 复制代码
<?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 复制代码
<?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绕过基本上是和其他的一些结合到一起的,作为最基础的一个绕过环节万变不离其宗,我们只要打好基础一切问题都可以很轻松的解决。

相关推荐
CYRUS_STUDIO1 小时前
Android APP 热修复原理
android·app·hotfix
鸿蒙布道师1 小时前
鸿蒙NEXT开发通知工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师1 小时前
鸿蒙NEXT开发网络相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
大耳猫2 小时前
【解决】Android Gradle Sync 报错 Could not read workspace metadata
android·gradle·android studio
ta叫我小白2 小时前
实现 Android 图片信息获取和 EXIF 坐标解析
android·exif·经纬度
dpxiaolong3 小时前
RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)
android·windows
tangweiguo030519874 小时前
Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
android
老狼孩111224 小时前
2025新版懒人精灵零基础及各板块核心系统视频教程-全分辨率免ROOT自动化开发
android·机器人·自动化·lua·脚本开发·懒人精灵·免root开发
打死不学Java代码5 小时前
PaginationInnerInterceptor使用(Mybatis-plus分页)
android·java·mybatis
IT乐手6 小时前
android 解决系统级应用 WebView 加载崩溃的问题
android