php-MD5()函数漏洞

2023-10-26

一、数字与字符串之间的比较

var_dump( 0 == "a" ); true
var_dump( "0" == "a" );false

php把字母开头的字符串转化为整型时,转化为0, 前面数字后面字母的话就只取到第一个字母出现的位置之前的数字。
二、MD5函数漏洞

$_GET['name'] != $_GET['password']
MD5($_GET['name']) == MD5($_GET['password'])

要求满足上述条件则
那么要求name和password数值不同但是MD5相同,在这里可以利用绕过。
PHP在处理哈希字符串时,它把每一个以“0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以“0E”开头的,那么PHP将会认为他们相同,都是0。
GET传入a=QNKCDZO&b=240610708就能绕过了
(MD5加密后和sha1加密后0E开头的字符串百度有很多)
三、弱口令

if($_POST['param1']!==$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){
        die("success!");
    }

在php中=为完全等于运算,不仅比较值,而且还比较值的类型,只有两者一致才为真。再次使用a=QNKCDZO&b=240610708就不行了,因为a和b类型不同
而在PHP中
md5([1,2,3]) == md5([4,5,6]) == NULL
[1] !
[2] && md5([1]) === md5([2])
所以GET传入a[]=1&b[]=2就能够绕过了
四、MD5碰撞

if((string)$_POST['param1']!==(string)$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){
        die("success!);
}

要求构造param1和param2不同,但是MD5相同,也就是说要求传入两个MD5相同的不同字符串。

Param1=%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
Param2=%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

MD5值相同使用谷歌可以搜到相当多被巧妙构造出的二进制文件,其MD5相同,注意一点,post时一定要urlencode!!!
使用fastcoll_v1.0.0.5工具可以生成两个具有相同MD5的文件,但是文件却是不同的。
参考链接:
https://blog.csdn.net/wy_97/article/details/79088218
https://blog.csdn.net/qq_19980431/article/details/83018232

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php-MD5()函数漏洞 的相关文章

  • 禁用/启用用户访问/下载,但允许 php 编辑 - 使用 chown 和 chmod

    我想 move uploaded files到某个文件夹 比方说http localhost myproject protected 并且 PHP 应该能够rm mv cp 里面的一切protected 例如 启用 禁用用户对任何文件的访问
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt
  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 使用 ImapMailbox.php 按日期对 Imap 邮箱进行排序

    我有一个客户支持系统 它会在收到电子邮件时创建电子邮件 我曾经使用后缀和特殊配置来获取电子邮件以添加额外的功能 例如 我想包含从电子邮件发送的附件 系统不会执行此操作 而是创建一封带有主题的电子邮件 因此我可以通过匹配主题来包含附件 我使用
  • PHP 自定义会话处理程序问题 (PHP 7.1)

    我刚刚在计算机上从 PHP 7 0 迁移到 PHP 7 1 当前版本的 WAMP 的全新 全新安装 它似乎破坏了自定义会话处理程序中的某些内容 该处理程序应该将会话保存到数据库而不是使用文件系统 自定义处理程序类是 class db ses
  • 如何将JS/CSS文件包含到Slim框架的模板中?

    我正在使用 Slim 框架开发一个简单的网络应用程序 我遇到了一个可能很简单的问题 我想将静态文件 CSS 和 Javascript 包含到我的模板中 我的项目文件夹结构如下 index php lt where all the routi
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 使用 PHP 创建、编辑和删除 crontab 作业?

    是否可以使用 PHP 创建 编辑和删除 crontab 作业 我知道如何列出 Apache 用户当前的 crontab 作业 output shell exec crontab l echo output 但是如何使用 PHP 添加 cro
  • 带摘要的 php curl 返回两个响应

    我发现了一个 奇怪 的 php CURL 行为 这让我抓狂 基本上我正在做的是使用curl 进行摘要身份验证的调用 这是我的代码的摘录 curl setopt this gt c CURLOPT HTTPAUTH CURLAUTH DIGE
  • json_decode 到自定义类

    是否可以将 json 字符串解码为 stdClass 以外的对象 不是自动的 但你可以按照老式的路线来做 data json decode json true class new Whatever foreach data as key g
  • 使用活动目录对 Intranet 站点上的用户进行身份验证

    我建立了一个 内联网 站点 它有自己的登录系统 用户注册为新用户 并使用其上的用户名 密码登录该站点 但是 现在我想扩展它 让 Intranet 站点使用现有的 ActiveDirectory 进行身份验证 这就是我正在寻找的 前进 当用户
  • Google Closure 编译器和 multipart/form-data 不起作用

    我正在向 google 闭包编译器 API 服务发出请求 content file get contents file js url http closure compiler appspot com compile post true p
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • 将 jQuery 与 Selenium WebDriver 结合使用 - 如何将 JSON 对象转换为 WebElement?

    我正在使用 Selenium WebDriver 我想执行 jQuery 代码来查找一些元素 我的代码如下 public function uploadGrantDoc script return itemlist grant file u
  • zend框架验证模型中的数据而不是表单中的数据

    使用 Zend Framework 2 在我的应用程序中 要编辑数据库中的数据 可以编译 html 表单或发送 http post 请求 我的服务器作为 Web 服务实现 在第二种情况下 不会呈现表单 问题 如果当服务器收到不是从表单发送而
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 访问 PHP 数组对象受保护的属性

    我正在尝试在 Symfony2 中上传多个文件 我正在尝试访问以下请求对象 但无法获取参数属性 如何将文件一一上传 我得到的错误 致命错误 无法访问第 66 行 var www File src Webmuch FileBundle Ent
  • Yii2 无效调用:设置只读属性

    我有一个Post具有多对多关系的模型Tags 在 Post 模型中定义 public function getTags return this gt hasMany Tags className id gt tag id gt viaTab
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module

随机推荐

  • kali linux 连接windows物理主机的安卓模拟器的方法

    不能直连 需要做个端口转发 具体如下 netsh interface portproxy add v4tov4 listenport 18888 listenaddress 0 0 0 0 connectport 62026 connect
  • Mbed在自己的stm32系列平台移植适配(三)

    Mbed在自己的stm32系列平台移植适配 适配平台 cpu STM32F103RCT6 外设 peripheral pin disciption LED1 PC 0 LED2 PC 6 UART5 TX PC 12 no remap UA
  • 贪心算法解决汽车加油问题

    文章目录 1 何为贪心算法 2 贪心算法的特点 3 汽车加油问题 问题描述 图解 代码实现 小结 1 何为贪心算法 贪心算法又称贪婪算法 是指在对问题求解时 总是做出在当前步骤看来是最好的选择 也就是说 不从整体最优上加以考虑 所做出的是在
  • 机器学习和数据挖掘(主流算法介绍)

    对机器学习和数据挖掘的科学定义是这样的 机器学习 Machine Learning ML 是一门多领域交叉学科 涉及概率论 统计学 逼近论 凸分析 算法复杂度理论等多门学科 专门研究计算机怎样模拟或实现人类的学习行为 以获取新的知识或技能
  • html高度塌陷问题的解决方案

    高度塌陷问题 在文档流中 父元素是被子元素给撑开的 也就是说子元素有多高 父元素就有多高 但是当为子元素设置浮动后 元素就会完全脱离文档流导致父元素的高度塌陷 由于父元素高度塌陷了 则父元素的所有元素都会向上移动 这样页面布局就会混乱 所以
  • linux shell脚本替换反斜杠

    1 windows中的脚本 路径均是反斜杠 在linux中 路径是斜杠 需要将反斜杠替换为斜杠 使用sed命令 如下 sed i s g home pp install sql 将 home pp install sql 文件中的 替换为
  • 【C++】C++从入门到精通教程(持续更新...)

    前言 最近在整理之前一些C 资料 重新整理出了一套C 从基础到实践的教程 包含概念 代码 运行结果以及知识点的扩展 感兴趣的后续大家持续关注 以下是更新的文章目录 文章之后整理了一个知识思维导图 看起来比较清楚点 目录 1 C 基础知识 C
  • Java 基础--- 静态绑定与动态绑定

    Java 基础 静态绑定与动态绑定 declared type actual type Static Binding 静态绑定 Dynamic Binding 动态绑定 为什么要区分动态绑定和静态绑定 declared type actua
  • ubuntu 16.04 安装redis 5.0.8

    上一个博客我给Ubuntu 16 04安装了SSH服务器 这篇博客主要展示在该系统上安装最新的redis 5 0 8 redis官方的地址为https redis io download 在Linux安装软件通常有两种方式 第一种是通过各个
  • 9、 Mac 实用软件清单

    Mac 实用软件清单 一 编辑器 Sublime Text 一个比较简洁大方带插件管理系统的流行编辑器 Sublime常用插件 PyCharm 一款 Python 开发集成环境 有专业版和社区版 IntelliJ IDEA 一款 Java
  • STM32独立看门狗IWDG和休眠(低功耗)共存那些事儿

    总结方法 1 寄存器写入标志位方法为主要手段 2 看门狗初始化放在标志位判断后方 3 合理利用单片机复位 标志位复位后不会丢失的特点 4 不同系列单片机寄存器不一样 调试不进入看门狗的做法 调试进入断点时不管停留多久 都不会触发看门狗 论坛
  • Vue实现loading加载动画

    Vue实现loading加载动画 1 在main js里引入axios import axios from http index js 2 在vuex中设置状态 state isLoading false 3 配置拦截器 import ax
  • 宇宙第一 IDE,放弃了 Mac....

    微软发布了 Visual Studio for Mac 退役的公告 公告写道 最新版本 Visual Studio for Mac 17 6 会继续获得额外 12 个月的支持 直至 2024 年 8 月 31 日 并提供针对安全问题的服务更
  • Bootstrap 入门

    一 Bootstrap 简介 框架顾名思义就是一套架构 它会基于自身的特点向用户提供一套较为完整的解决方案 框架的控制权在框架本身 使用者要按照框架所规定的某种规范进行开发 而插件一般是为了解决某个问题专门存在的 其功能单一 并且比较小 前
  • docker windows 下载安装 Update the WSL kernel by running “wsl --update“ or follow instructions at xxx

    下载 Docker Accelerated Containerized Application Development 我这里安装的是windows版的 docker windows 下载安装运行之后提示更新WSL 1 打开cmd窗口记得是
  • firefly如何安装mysql_Firefly安装ROS及ssh远程登录配置

    一 在Linux firefly 3 10 0 上安装ROS indigo 快捷键 CTRL ALT T 打开终端并安装ROS indigo sudo sh c echo deb http packages ros org ros ubun
  • C++ 私有构造函数的作用

    很多情况下要求当前的程序中只有一个object 例如一个程序只有一个和数据库的连接 只有一个鼠标的object 通常我们都将构造函数的声明置于public区段 假如我们将其放入private区段中会发生什么样的后果 这意味着什么 当我们在程
  • (Java)leetcode-84 Largest Rectangle in Histogram( 柱状图中最大的矩形)

    题目描述 难度 hard 给定 n 个非负整数 用来表示柱状图中各个柱子的高度 每个柱子彼此相邻 且宽度为 1 求在该柱状图中 能够勾勒出来的矩形的最大面积 以上是柱状图的示例 其中每个柱子的宽度为 1 给定的高度为 2 1 5 6 2 3
  • SFTP对文件重命名 删除 退出 查看

    常用命令 rename A B ls 空格 t ls 空格 lt sftp gt help Available commands bye Quit sftp
  • php-MD5()函数漏洞

    一 数字与字符串之间的比较 var dump 0 a true var dump 0 a false php把字母开头的字符串转化为整型时 转化为0 前面数字后面字母的话就只取到第一个字母出现的位置之前的数字 二 MD5函数漏洞 GET n