• ISCC2019-web1


    明显是代码审计

    <?php
    error_reporting(0);
    require 'flag.php';
    $value = $_GET['value'];
    $password = $_GET['password'];
    $username = '';

    for ($i = 0; $i < count($value); ++$i) {
        if ($value[$i] > 32 && $value[$i] < 127) unset($value);
        else $username .= chr($value[$i]);
        if ($username == 'w3lc0me_To_ISCC2019' && intval($password) < 2333 && intval($password + 1) > 2333) {
            echo 'Hello '.$username.'!', '<br>', PHP_EOL;
            echo $flag, '<hr>';
        }
    }

    highlight_file(__FILE__);

    Get方法传参,value的值不能在32到127之间,那怎么可能等于w3lc0me_To_ISCC2019。经查资料,得知chr()函数是除以256取余,那我们将w3lc0me_To_ISCC2019转换成ascii然后加256就OK了。

    然后看password,GET的password的值是字符串,intval('十六进制')会返回0,但是intval('16进制+1'),就会将16进制字符串强制转换为数型。所以就很容易绕过了。

  • 相关阅读:
    20161115学习笔记
    20161114学习笔记
    微服务
    20161111学习笔记
    20161110学习笔记
    统一ID生成服务
    BlockingQueue原理
    spring常用注解
    Spring 事件发布
    java8 DateUtil工具
  • 原文地址:https://www.cnblogs.com/whitehawk/p/10817028.html
Copyright © 2020-2023  润新知