查看: 11226|回复: 2

由一道CTF题引申的思考

[复制链接]
  • TA的每日心情

    2018-9-22 14:28
  • 签到天数: 157 天

    [LV.7]常住居民III

    发表于 2016-2-13 19:31:02 | 显示全部楼层 |阅读模式
    很久以前打了场CTF比赛,在论坛里求解,此时90大大丢给了我答案(在这里谢谢90大大),然而我和一些论坛里的朋友并不知道原理。在这里与大家分享一下。
    -------------------------------------------------------------------华丽丽的分割线-----------------------------------------------------------------------------------------
    题目源代码如下:
    [PHP] 纯文本查看 复制代码
    <?php
     //just break the md5 algorithm and make a collision ;)
     include('config.php');
     if(empty($_GET['md5'])) die(show_source(__FILE__));
     if($_GET['md5']!='400035577431' && md5($_GET['md5']) == md5('400035577431')) echo $flag;
     ?>

    然后比赛就是拿flag。这里是要给出一个md5满足不等于400035577431,但是md5加密后==。
    因为php是一种弱类型的语言。双==其实就是弱类型。

    这里举出一些例子:
    [PHP] 纯文本查看 复制代码
    0=='0'//True
    123=='123'//True
    123=='123abc'//True
    'abc'=='0'//True


    现在看一下90大大给的md5=0e091414744693913505115617781878,这一串intval()之后就是0,而400035577431加密后为0e091414744693913505115617781878,intval()之后也是0,所以相等。


    回复

    使用道具 举报

  • TA的每日心情

    2024-12-14 22:22
  • 签到天数: 1631 天

    [LV.Master]伴坛终老

    发表于 2016-2-13 19:42:24 | 显示全部楼层
    啊想起来了,这题目有段日子了

    点评

    是有些时候了。。。  详情 回复 发表于 2016-2-13 22:11
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-9-22 14:28
  • 签到天数: 157 天

    [LV.7]常住居民III

     楼主| 发表于 2016-2-13 22:11:01 | 显示全部楼层
    90_ 发表于 2016-2-13 19:42
    啊想起来了,这题目有段日子了

    是有些时候了。。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-23 07:44 , Processed in 0.025324 second(s), 16 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部