<?php
$flag = "flag";
if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
echo 'You password must be alphanumeric';
else if (strpos ($_GET['password'], '--') !== FALSE)
die('Flag: ' . $flag);
else
echo 'Invalid password';
}
?>
1. isset()函数 — 检测变量是否已设置并且非 NULL
2.
ereg()函数 — 正则表达式匹配
3. strpos() 函数对大小写敏感。
“[A-Za-z0-9]" 方括号表示字符集,[A-Za-z0-9]匹配大小写字母和数字其中一个字符 "^[A-Za-z0-9]$" ^表示字符串开始,$表示字符串结束 ,这个匹配只有一个大小写字母和数字字符的字符串 “^[A-Za-z0-9]+$" +号表示重复1到多次,匹配由多个数字大小字母组成的字符串
阅读代码,本题需要满足的条件
必须以数字或者字母开头(其实看到ereg就可以想到%00截断); 必须在password参数中找到--。
所以得到
?password=a%00--