modaiairen 2020-05-05
<?php $flag = "xxx"; if (isset ($_GET[‘password‘])) { if (ereg ("^[a-zA-Z0-9]+$", $_GET[‘password‘]) === FALSE) { echo ‘You password must be alphanumeric‘; } else if (strlen($_GET[‘password‘]) < 8 && $_GET[‘password‘] > 9999999) { if (strpos ($_GET[‘password‘], ‘-‘) !== FALSE) //strpos — 查找字符串首次出现的位置 { die(‘Flag: ‘ . $flag); } else { echo(‘- have not been found‘); } } else { echo ‘Invalid password‘; } } ?>
ereg()函数搜索一个字符串中的指定字符串,成功true,错误false
传入的值必须是数字或大小写字符
传入的值长度小于8,但要大于9999999
长度和数值矛盾,采用1e8,1x10的8次方,绕过
方法1:%00截断
*-* 双星闭合 http://123.206.87.240:9009/5.php?password=1e8%00*-*
方法2:数组
数组过滤掉greg判断
http://123.206.87.240:9009/5.php?password[]=1e8-