一、考察方向

  • PHP的$GLOBALS
  • 正则表达式

二、PHP预备知识——$GLOBALS

  其中提示flag在变量中 “flag In the variable !” ,这里要普及一个PHP中特殊的变量

  $GLOBALS —— 引用全局作用域中可用的全部变量

  说明:一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

  示例:

#示例代码
<?php
function test() {
$foo = "local variable";

echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
echo '$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();
?>
#结果
$foo in global scope: Example content
$foo in current scope: local variable

  注意:

  • “Superglobal”也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。
  • 变量可用性。与所有其他超全局变量不同,$GLOBALS在PHP中总是可用的。

三、代码分析

  页面如下

image.png

  其中正则表达式/^\w+$/,意思是只能有字母和数字

  • 两个//表示开始和结束
  • ^表示开始字符串
  • $表示结束字符串
  • \w表示包含【a-z,A-Z, _ , 0-9】
  • +表示一个或者多个\w
  • 后面的i表示不区分大小写,在此处没用,因为\w里已经包含了大小写。

四、解题

  访问http://114.67.246.176:12610/?args=GLOBALS,看到flag

image.png