• PHP一致性hash


    PHP提供了两种比较两个变量的方法:

    • 松散比较使用 == or != : 两个变量都具有“相同的值”。
    • 严格比较 === or !== : 两个变量都具有“相同的类型和相同的值”。

    类型杂耍

    真实陈述

    var_dump('0010e2'   == '1e3');           # true
    var_dump('0xABCdef' == ' 0xABCdef');     # true PHP 5.0 / false PHP 7.0
    var_dump('0xABCdef' == '     0xABCdef'); # true PHP 5.0 / false PHP 7.0
    var_dump('0x01'     == 1)                # true PHP 5.0 / false PHP 7.0
    var_dump('0x1234Ab' == '1193131');
    '123'  == 123
    '123a' == 123
    'abc'  == 0
    '' == 0 == false == NULL
    '' == 0       # true
    0  == false   # true
    false == NULL # true
    NULL == ''    # true

    空语句

    var_dump(sha1([])); # NULL
    var_dump(md5([]));  # NULL

    魔术哈希-漏洞利用

    如果计算的哈希仅以“ 0e”(或“ 0..0e”)开头,后跟数字,则PHP将把哈希视为浮点数。

    Hash“Magic” Number / StringMagic Hash-魔术哈希
    MD5 240610708 0e462097431906509019562988736854
    SHA1 10932435112 0e07766915004133176347055865026311692244
    SHA-224 10885164793773 0e281250946775200129471613219196999537878926740638594636
    SHA-256 34250003024812 0e46289032038065916139621039085883773413820991920706299695051332
    SHA-256 TyNOQHUS 0e66298694359207596086558843543959518835691168370379069085300385

    <?php var_dump(md5('240610708') == md5('QNKCDZO')); # bool(true) var_dump(md5('aabg7XSs') == md5('aabC9RqS')); var_dump(sha1('aaroZmOk') == sha1('aaK1STfY')); var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m')); ?>


    之前遇到的一个CTF实例:

  • 相关阅读:
    P2216 [HAOI2007]理想的正方形(dp+单调队列优化)
    洛谷P1415 拆分数列(dp)
    2017 ACM-ICPC EC-Final ShangHai 东亚洲大陆-上海
    sql查询50题
    虚拟机安装
    Kick Start 2019 Round A Parcels
    Kick Start 2019 Round B Energy Stones
    【DP 好题】Kick Start 2019 Round C Catch Some
    【图论好题】ABC #142 Task F Pure
    【DP 好题】hihoCoder #1520 古老数字
  • 原文地址:https://www.cnblogs.com/micr067/p/12623322.html
Copyright © 2020-2023  润新知