zoukankan      html  css  js  c++  java
  • 【南邮】md5 collision write up

    源码:

    <?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";}
    ?>

    MD5碰撞的概念:

    从根本上讲,MD5算法是一种摘要算法,它可以从多个字节组成的串中计算出由32个字节构成的“特征串”。对于超过32字节的串来说,MD5计算得出的值必然是其一个子集,所以必然存在两个(或更多)不同的串能够得出相同MD5值的情况。这种情况就叫做MD5碰撞。

    php关于==号是这样处理的,如果一边是整型,另一边也需要是整型。

    0e545993274517709034328855841020
    这是一个整数,在php里是理解为0*10^4549...20的意思,那么其值是0

    同样

    0e342768416822451524974117254469
    这是一个整数,在php里是理解为0*10^34..69的意思,那么其值是0

    md5('s878926199a')=0e545993274517709034328855841020
    md5('s155964671a')=0e342768416822451524974117254469
    //可以看到两者的md5值都是以0e开头的,则
    md5('s878926199a')==md5('s155964671a') //就是True

    所以 构造提交a=s155964671a

    得到flag:nctf{md5_collision_is_easy}


  • 相关阅读:
    数据分析淘宝口红评论(男生勿进
    使用BaseMap绘制地图它不香么
    python使用openpyxl操作excel
    pandas之初探index对象
    pandas之IO数据读写
    pandas之DataFramer入门到弃坑
    pandas数据重复,替换和添加处理
    pandas数据缺失处理
    SVG:可伸缩的矢量图形
    20条书写CSS代码
  • 原文地址:https://www.cnblogs.com/liuyimin/p/7912192.html
Copyright © 2011-2022 走看看