可变变量
$$args
flag In the variable ! <?php
error_reporting(0); //关闭php错误提示
include "flag1.php"; //包含flag1.php文件
highlight_file(__file__); //语法高亮
if(isset($_GET['args'])){ //条件判断get传递的参数srgs是否存在
$args = $_GET['args']; //赋值给 变量$args
if(!preg_match("/^\w+$/",$args)){ //条件判断 变量$args 与正则表达式匹配
//这里代码的意思是 确保$args 全部都是字母或数字,没有其他符号
// /^开始 \w表示所有字符 即:[a-z A-Z 0-9 _] + 表示匹配单次或者多次 $/结尾
die("args error!"); //输出args error!
}
eval("var_dump($$args);"); //eval命令执行,var_dump() 显示()内变量信息【显示关于一个或多个表达式的结构信息,包括表达式的类型与 值。数组将递归展开值,通过缩进显示其结构】 $$args 相当于 $($args)
}
?>
- 如上面示例代码:
$$args 相当于 $($args)
- 全局变量GLOBALS 中存储了所有的变量
- 构造payload :?args = GLOBALS
我在其它文章中看到,\w不仅仅代表[a-z A-Z 0-9 _ ] 还包括其他字符博客园:正则表达式\w \d的意义
部分引用于csdn