1 <?php 2 $flag = "xxx"; 3 if (isset ($_GET['password'])) 4 { 5 if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE) 6 { 7 echo ' 8 9 You password must be alphanumeric 10 11 '; 12 } 13 else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999) 14 { 15 if (strpos ($_GET['password'], '*-*') !== FALSE) //strpos — 查找字符串首次出现的位置 16 { 17 die('Flag: ' . $flag); 18 } 19 else 20 { 21 echo(' 22 23 - have not been found 24 25 '); 26 } 27 } 28 else 29 { 30 echo ' 31 32 Invalid password 33 34 '; 35 } 36 } 37 ?>
首先我们看一下代码,分析一下有这么几个点
1.password的值只能是一个或者多个数字、大小写字母;
2.password内容字符串长度不超过8,且值要大于9999999;
3.password最后要匹配到*-*.
满足上面两个条件才可获得flag
前面两个条件我们可以弱类型绕过,最后一个可以%00截断