• MD5碰撞


    PHP在处理哈希字符串时,

    会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

    "==="和"!=="即strict比较符,只有在类型相同时才相等。"=="和"!="即non-strict比较符,会在类型转换后进行比较。

    此外0 == 字符会被认为是正确的,可以绕过验证


    例子1:bugku的碰撞题目

    md5 collision(NUPT_CTF)

    输入一个a,但我们不知道其确切的值,就用md5碰撞来绕过:

     

    字母数字混合类(MD5值):

    s878926199a
    0e545993274517709034328855841020
    s155964671a
    0e342768416822451524974117254469
    s214587387a
    0e848240448830537924465865611904
    s214587387a
    0e848240448830537924465865611904
     
    大写字母类:
    QLTHNDT
    0e405967825401955372549139051580
     
    QNKCDZO
    0e830400451993494058024219903391
     
    EEIZDOI
    0e782601363539291779881938479162
     
    纯数字类:
    240610708
    0e462097431906509019562988736854
     

    绕过以后返回flag值

    例子2:



    题目的php代码,需要传两个参数v1和v2,v1必须为字母,v2必须为数字,如果两者的MD5值相同,打印flag

    用到上面提到的MD5碰撞数,就能返回flag

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    WslRegisterDistribution failed with error: 0x80370102
    vscode C/C++ 语法检查
    ADO.NET 一(概述)
    线程三(Mutex)
    线程二(Monitor)
    线程一(lock)
    interface Part4(接口中的多态)
    interface Part3(实现:显示和隐式)
    interface Part2(定义接口)
    interface Part1(接口详解)
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12309225.html
Copyright © 2020-2023  润新知