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进制字符串强制转换为数型。所以就很容易绕过了。