md5 collision(md5碰撞)

2023-11-03

题目来源:南京邮电大学网络攻防训练平台 Web题 md5 collision

解题过程:

点开题目标题,呈现在眼前的是一段php代码,代码如下:

$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
    if ($a != 'QNKCDZO' && $md51 == $md52) {
        echo "nctf{*****************}";
    } else {
        echo "false!!!";
    }
}
else{
    echo "please input a";
}

这段代码什么意思呢?

首先,变量md51的值是经过md5加密的字符串QNKCDZO,字符串QNKCDZO经过md5加密之后的值为:0e830400451993494058024219903391。之后的变量a,分析源代码可知,如果a的值不为QNKCDZO,并且md5的值也为0e830400451993494058024219903391,则会输出flag。根据之前的了解,不过好像除了QNKCDZO,并没有其他字符串的md5值为0e830400451993494058024219903391。再回头看源码,注意到判断md51和md52是否相等的时候,使用$md51 == %md52,这里使用的是 == 而不是 === ,也就是说md51和md52不需要完全相等。

拓展:一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的啦!所以,0 ==’abc’是成立的。当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。

这个题目也是这个原理,如果你提前知道md5碰撞的概念,同时知道了在php中md5中的0e的比较,这道题目就非常简单了。

如果md的值是以0e开头的,那么就与其他的0e开头的md5值是相等的,这里给大家列举了一写:常见的MD5碰撞:md5值为0e开头

php代码测试:

<?php
$a = md5('240610708'); // = 0e462097431906509019562988736854
$b = md5('QNKCDZO'); // = 0e830400451993494058024219903391
var_dump($a == $b);
?>

输出:true

这样就更加证明了这一点。

所以,这里我们就给a传值经过md5加密后是0e开头的字符串,以传入字符串s878926199a,为例:

end!

总结:

  • php使用==比较数字和字符串时,将字符串转换成数字后与数字进行比较。
  • php字符串转换成数字的规则是:
    • 字符串以数字开头:取前面的数字
    • 字符串不以数字开头:0
  • 如果==两侧的字符串都是以0e开头,并且后面还是数字,就会被解释成科学计数法,也就是0的多少多少次幂,也就是后面的数字无论是多少,最后结果都为0.
  • 上一点也是这道题的另一种思路。找到另一个字符串,这个字符串的md5值也以0e开头。
  • 以0e开头的串很危险!!!

 

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

md5 collision(md5碰撞) 的相关文章

  • 无字母数字的命令执行(ctfshow web入门 55)

    这几天都没有怎么学习 基本上都是复习学科知识 因为我们要期末考试 刚刚好今天有时间来做了一道命令执行的题 再一次拜读了 p神的文章 受益匪浅 直接进入正题 源代码
  • 攻防世界-adworld-fileclude-新手

    攻防世界 adworld fileclude 新手 34最佳Writeup由 Haojie 提供WriteUP 收藏 反馈 难度 1 方向 Web 题解数 13 解出人数 2346 题目来源 CTF 题目描述 好多file呀 题目场景 ht
  • BUUCTF WEB刷题记录

    第一题 刚打开的页面 看源码 发现source php 访问source php 我们要用file参数带出flag 但是有白名单限制 第一个和第二个判断是对file本身的值进行判断 第三个和第四个是对 前面的file值进行判断 所以我们可以
  • 攻防世界-re-for-50-plz-50

    1 下载附件 exeinfo查壳 无壳 2 32位IDA分析 主函数分析 在注释里 31的来源 python和C语言 a cbtcqLUBChERV Nh X D X YPV CJ print len a include
  • Dvwa页面标红问题的逐步攻破(二)

    提示 第二个问题花了很长时间 试了很多种办法 都没成功 但是经过后续的操作我发现第二个问题并没有太大的影响 那就说一下在此过程中遇到的问题及解决吧 解决PHP module gd MIssing Only an issue if you w
  • [西湖论剑2021中国杭州网络安全技能大赛]Yusa的秘密 writeup

    西湖论剑2021 Yusa的秘密 Sakura组织即将进攻地球 此时你意外得到了该组织内某个成员的电脑文件 你能从中发现本次阴谋所用的关键道具吗 注 题目中包含了五个彩蛋 且彩蛋对解题本身没有任何影响 快去发现吧 附件 Who am I z
  • ctfshow- web1(50 point)

    0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 首先映入眼帘的是登录界面 尝试弱口令无果 可以注册 尝试注册一个账号 通过url发现这里是通过order by进行了排序 测试发现一共5个字
  • ctfshow_web149

    打开容器
  • 再探ROP(下)

    文章目录 0x01 概述 0x02 ret2reg 2 1 起因 2 2 原理 0x03 brop详解 3 1 概述 3 2 逆向思维切入 1 搭建环境 2 溢出长度和爆破canary 3 如何getshell 4 寻找直接条件 5 寻找间
  • 某**集团夺旗赛的一道隐写题

    解压压缩包 解压出来一个文件file 使用file命令进行查看 发现是data 010查看也无果 看到标题是logistic联想到是否与xor文件有关 遂使用工具xortool 工具在此 xortool file 选概率最大的那个 13 x
  • [CTF/网络安全] 攻防世界 disabled_button 解题详析

    CTF 网络安全 攻防世界 disabled button 解题详析 input标签 姿势 disable属性 总结 题目描述 X老师今天上课讲了前端知识 然后给了大家一个不能按的按钮 小宁惊奇地发现这个按钮按不下去 到底怎么才能按下去呢
  • SAR: 1 4 https://www.vulnhub.com/entry/sar-1%2C425/

    SAR 1 About Release Back to the Top Name Sar 1 Date release 15 Feb 2020 Author Love Series Sar Download Back to the Top
  • Burp Suit+Phpstudy+Pikachu搭建Web安全练习环境

    1 软件安全测试工具Burp Suit安装 1 1 社区版 进入官网 Download Burp Suite Community Edition PortSwigger 进行下载安装即可 1 2 专业版 搜索Burp Suit2 0 11从
  • CTF-----RE练习题(二)

    学习打卡篇八 每天学习一点点 认识壳 在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序 它们一般都是先于程序运行 拿到控制权 然后完成它们保护软件的任务 由于这段程序和自然界的壳在功能上有很多相同的地方 所以就把这样的程序
  • 网络安全实验室CTF练习部分题目(持续更新)

    1 脚本关 微笑一下 过关地址 http lab1 xseclab com base13 ead1b12e47ec7cc5390303831b779d47 index php 查看源代码 include flag php smile 1 i
  • NEZUKO: 1——202201152003

    NEZUKO 1 202201152003 About Release Back to the Top Name nezuko 1 Date release 21 Aug 2019 Author yunaranyancat Series n
  • BUUCTF [极客大挑战 2019]Knife

    打开一看结合题目 就是连接一下菜刀蚁剑 菜刀没用过只有蚁剑 下面用蚁剑实现 设置好URL和链接密码 找到flag文件 打开后找到flag 文件上传漏洞 一句话木马 php Asp Aspx 前端判断文件后缀名可以Burp Suite配置好P
  • CTFShow-WEB入门篇--信息搜集详细Wp

    CTFShow WEB入门篇详细Wp 信息收集 web1 web2 web3 web4 web5 web6 web7 web8 web9 web10 web11 web12 web13 web14 web15 web16 web17 web
  • [NCTF2019]Fake XML cookbook

    NCTF2019 Fake XML cookbook 日常刷题 打开题目嗯 一开始我的脑子里想到的是禁止自娱自乐 狗头 哈哈 第一想法就是试一下admin 别问为什么 web狗的自觉 果然没这么容易 抓包 将提交的数据放到了doLogin
  • [SHCTF 2023]——week1-week3 Web方向详细Writeup

    Week1 babyRCE 源码如下

随机推荐

  • rocksdb原理_ceph性能调优历程-rocksdb篇(1)

    最近调优及其他工作实在太忙 没有太多时间写心得 今天抽空来总结一下阶段性成果吧 从一开始的ceph调研 系统调优开始 ceph集群存储大规模数据之后 集群文件数超过2亿 rgw并发写性能下降的问题一直困扰我们 终于在最近找到了原因及相关解决
  • C++primer Plus 第七章复习题

    1 使用函数的3个步骤是什么 定义函数 提供原型 调用函数 2 请创建与下面的描述匹配的函数原型 igor 没有参数 且没有返回值 void igor tofu 接受一个int参数 并返回一个float float tofu int mpg
  • 去除discuz手机版链接&mobile=2后缀

    discuz手机版链接自动添加 mobile 2 导致百度收录的手机版链接无法打开 解决思路 1 打开 source class helper helper mobile php文件搜索下面代码 约在22行 content preg rep
  • malloc的底层实现(ptmalloc)

    前言 本文主要介绍了ptmalloc对于内存分配的管理 结合网上的一些文章和个人的理解 对ptmalloc的实现原理做一些总结 内存布局 介绍ptmalloc之前 我们先了解一下内存布局 以x86的32位系统为例 从上图可以看到 栈至顶向下
  • 【深度学习】_amax() got an unexpected keyword argument ‘dim‘ 解决方案

    在定义一个点云数据pc后 想使用pc max dim 0 然后出现了 amax got an unexpected keyword argument dim 这个是因为对于tensor类型的数据和ndarray类型的数据都有一个max mi
  • 彻底搞懂字符编码ASCII,GB2312,UNICODE,UTF-8

    文章目录 基础 什么是字符编码 正文 ASCII ASCII扩展码 GB2312 GBK DBCS UNICODE UTF 8 UTF 16 USC 2 UTF 32 USC 4 编程语言对字符编码的支持 阅读了一篇关于编码的博客 点击打开
  • Matlab实现PSO算法(附上10个完整仿真源码)

    PSO Particle Swarm Optimization 是一种优化算法 它模拟了鸟群或鱼群等动物的集体行为 通过群体智能的方式来解决优化问题 PSO算法最初由Kennedy和Eberhart在1995年提出 近年来得到了广泛的应用
  • 区块链上的订阅

    为分散式应用程式 以太坊 实施订阅模型 Luca Bravo在Unsplash上拍摄的背景照片 以太坊徽标 火种金标志 介绍 您可能已经听说过 去中心化的应用程序将成为互联网的未来 为了使这个分散的生态系统蓬勃发展并可持续发展 我们将需要许
  • 人工智能数学基础---定积分2:定积分的性质

    一 引言 在 人工智能数学基础 定积分1 定积分的概念以及近似计算 介绍了定积分的概念 几何意义 用定义来求定积分的案例以及使用矩形法 梯形法和抛物线法求定积分近似值的方法和案例等基础知识 根据上文的介绍 结合相关知识补充如下2条规则 可以
  • #pragma once 与#ifndef 的区别解析

    原文地址 http blog csdn net hkx1n article details 4313303 作用 为了避免同一个文件被include多次 C C 中有两种方式 一种是 ifndef方式 一种是 pragma once方式 在
  • linux 查看文件的inode使用情况

    linux 查看文件的inode使用情况 查看文件的空间使用情况 root racdb01 df h Filesystem Size Used Avail Use Mounted on dev mapper vg lgoracle lv r
  • Hutool工具BeanUtil.copyProperties实现自定义类型转换器之字符串转时间格式化

    hutool工具BeanUtil copyProperties在字符串转LocalDateTime时默认用的格式为yyyy MM ddTHH mm ss 所以需要自定义转换器才行 在转换时会优先使用自定义的 在项目启动时执行一次此段代码即可
  • Vue-cli 与Vite 环境搭建与项目构建

    Vue cli 与Vite 环境搭建与项目构建 在之前的语法演示中 我们直接使用 script 引入 Vue 3 从而在浏览器里实现了所有调试功能 但是在实际的项目中 我们会使用专门的调试工具 在项目上线之前 代码也需要打包压缩 并且考虑到
  • $.extend插件的开发与代码的编写

    extend插件的开发与代码的编写 extend item 该方法是将item合并到Jquery的全局对象中去 相当于为Jquery全局对象添加了一个静态方法 extend SayHello function value alert hel
  • Golang(Go语言)内置函数之append

    append主要用于给某个切片 slice 追加元素 如果该切片存储空间 cap 足够 就直接追加 长度 len 变长 如果空间不足 就会重新开辟内存 并将之前的元素和新的元素一同拷贝进去 第一个参数为切片 后面是该切片存储元素类型的可变参
  • TCP超时编程

    2018 2 12http blog csdn net NK test article details 49050379 这个是超时相关的设置 不过比较麻烦的就是 还有很多错误的设置比较难 C的却是太底层的底层的东西 http blog c
  • gcc 编译小笔记

    最近在测试编译个程序的时候发现无论如何都没法正常编译 命令行是这样的 gcc I include L lib lVU lfftw3f lvsip lfftw lfftw3f lrfftw conv1dEx c 一直报链接错误 但是库文件名字
  • python数据库框架_Python六大框架对比,Web2py略胜一筹

    Python是一门动态 面向对象语言 其最初就是作为一门面向对象语言设计的 并且在后期又加入了一些更高级的特性 除了语言本身的设计目的之外 Python标准库也是值得大家称赞的 Python甚至还自带服务器 其它方面 Python拥有足够多
  • Windows平台实现Unity下窗体

    技术背景 随着Unity3D的应用范围越来越广 越来越多的行业开始基于Unity3D开发产品 如传统行业中虚拟仿真教育 航空工业 室内设计 城市规划 工业仿真等领域 基于此 好多开发者苦于在Unity环境下 没有低延迟的推拉流解决方案 前几
  • md5 collision(md5碰撞)

    题目来源 南京邮电大学网络攻防训练平台 Web题 md5 collision 解题过程 点开题目标题 呈现在眼前的是一段php代码 代码如下 md51 md5 QNKCDZO a GET a md52 md5 a if isset a if