php之chr()和intval()的trick--day1

这道题是自己从github上面下载下来的。
从这道题学了PHP俩个trick

首先介绍一下chr()和intval()的trick
chr()函数在进行运算的时候有先将数字mod 256 然后在进行chr()转换

<?php
$a=65;
$b=65+256;
echo chr($a);#输出A
echo chr($b);#也输出A
?>

另一个是intval()函数。
大概思路就是通过16进制绕过
但是我想可能是因为现在PHP7版本没有这个漏洞了~
我也不清楚,希望大佬能够说明一下。

最后附上题目:

<?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_sec_WIki' && intval($password) < 232 && intval($password + 1) > 233) {
        echo 'Hello '.$username.'!', '<br>', PHP_EOL;
        echo $flag, '<hr>';
    }
}

highlight_file(__FILE__);

posted @ 2020-08-03 23:58  Firebasky  阅读(170)  评论(0)    收藏  举报