web9--bugku
`flag In the variable !` <?php ##flag在变量中
error_reporting(0); ## 设置应该报告何种 PHP 错误,0为关闭所有PHP错误报告
include "flag1.php"; ##包含并运行指定文件。
highlight_file(__file__); ##对文件进行语法高亮显示
if(isset($_GET['args'])){ ##检测变量是否设置。
$args = $_GET['args']; ##收集来自 method="get" 的表单中的值
if(!preg_match("/^\w+$/",$args)){ ##输入的变量没有规定字符(大写小写数字)或者多余字符则变量错误,^开始,\w表示任意一个单词字符,即[a-z][A-Z][0-9],+将前面的字符匹配一次或多次,$/结束。后面的args变量是被匹配的。
die("args error!"); ##变量错误
}
eval("var_dump($$args);"); ##显示变量的变量
}
?>
又因为题目提示我们flag在变量中,所以我们想到全局变量GLOBALS,GLOBALS并没有超出大小写数字的范围,而直接使用flag.php会有.这个符号,没有匹配到,所以会显示变量错误。