微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐