V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ty0716
V2EX  ›  PHP

一道 PHP 安全题,大家来玩坏他

  •  2
     
  •   ty0716 · 2015-10-17 19:31:53 +08:00 · 5280 次点击
    这是一个创建于 3323 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要求输出$flag,实在没看出是什么鬼。大神勿喷

    传送门:http://202.120.7.133:8888/collision.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;
    ?>
    1
    
    第 1 条附言  ·  2015-10-17 22:32:39 +08:00

    第二题:

    传送门:http://202.120.7.134:8888/html/array.php

    <?php
    include('config.php');
    if(empty($_GET['user'])) die(show_source(__FILE__));
    $user = ['admin', (string)time()];
    if($_GET['user'] === $user && $_GET['user'][0] != 'admin'){echo $flag;}
    

    求$flag;

    24 条回复    2015-10-19 11:32:30 +08:00
    menc
        1
    menc  
       2015-10-17 19:51:29 +08:00
    人家说的不是很明白要给出 400035577431 的一个 md5 碰撞么
    virusdefender
        2
    virusdefender  
       2015-10-17 20:08:14 +08:00
    php 弱类型吧,想办法绕过$_GET['md5']!='400035577431'
    raincious
        3
    raincious  
       2015-10-17 20:11:11 +08:00
    http://202.120.7.133:8888/collision.php?md5=QNKCDZO

    看到了==比较符号猛然想到了这个帖子
    https://www.v2ex.com/t/188364
    zk8802
        4
    zk8802  
       2015-10-17 20:12:56 +08:00
    注意 == 和 === 在 PHP 中的区别。
    newliu6
        5
    newliu6  
       2015-10-17 20:21:12 +08:00   ❤️ 1
    ISG{not_OnlY_mD5_c0llisi0N_bUt_aLs0_proBl3m}
    POP
        6
    POP  
       2015-10-17 20:30:47 +08:00
    @newliu6 你快把别人玩坏了。。。。。
    MrZephyrus
        7
    MrZephyrus  
       2015-10-17 21:15:59 +08:00
    竟然在这儿问 ISG 的题...
    Scholer
        8
    Scholer  
       2015-10-17 22:03:12 +08:00
    240610708
    ty0716
        9
    ty0716  
    OP
       2015-10-17 22:34:51 +08:00
    @Scholer 这个是怎么计算出来的?
    wsy2220
        10
    wsy2220  
       2015-10-17 22:38:04 +08:00
    看 ip 好熟悉,一查果然是交大的~
    ty0716
        11
    ty0716  
    OP
       2015-10-17 22:38:04 +08:00
    @raincious 又更新了个,来围观下
    Scholer
        12
    Scholer  
       2015-10-17 22:40:32 +08:00   ❤️ 1
    @ty0716 0e123 之类的字符串在 使用 == 判断时会被认为是 科学计数法表示的小数,直接转换为 0 。
    Scholer
        13
    Scholer  
       2015-10-17 22:41:58 +08:00
    @ty0716 这个之前发过好多了

    类似的还有
    QNKCDZO
    aabg7XSs
    aabC9RqS
    rannnn
        14
    rannnn  
       2015-10-17 23:03:33 +08:00
    @MrZephyrus ISG 是什么?
    xjx0524
        15
    xjx0524  
       2015-10-17 23:36:55 +08:00
    刚去注册了下,登陆那个答题系统一直密码错误,难道这就开始是题目了?
    wusuopuBUPT
        16
    wusuopuBUPT  
       2015-10-17 23:55:07 +08:00
    MrZephyrus
        17
    MrZephyrus  
       2015-10-17 23:58:27 +08:00
    softbug
        18
    softbug  
       2015-10-18 11:30:10 +08:00
    很想知道第二题 有悖常理啊
    raincious
        19
    raincious  
       2015-10-18 14:04:52 +08:00
    @ty0716

    第二题比较难。我需要研究下 PHP 的源代码才能确定问题(如果问题真的存在的话)。
    CChin
        21
    CChin  
       2015-10-18 23:00:56 +08:00
    @xiaoks 那请问这个 EXP 用出来这么不输出东西
    orzfly
        22
    orzfly  
       2015-10-19 02:45:10 +08:00
    (避免有人看不懂 20 楼的微博链接)

    php > $a[4294967296]="admin";
    php > var_dump($a);
    array(1) {
    [4294967296]=>
    string(5) "admin"
    }
    php > var_dump($a === ["admin"]);
    bool(true)
    barbery
        23
    barbery  
       2015-10-19 10:56:12 +08:00
    第二题有点意思,不错不错
    newliu6
        24
    newliu6  
       2015-10-19 11:32:30 +08:00
    (string)time()这个怎么撞?时间一直在变吧。
    我尝试的方法是获取服务器时间,转成 timestamp ,然后加个 30 ,不断刷新去等。。。笨
    有好点儿的方法么。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5720 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 06:25 · PVG 14:25 · LAX 22:25 · JFK 01:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.