
打开网址,是一段php代码,分析代码:

bash
1、通过GET参数动态打印指定变量的值
2、使用正则/^\w+$/限制参数只能包含字母、数字、下划线
3、eval("var_dump($$args);")存在变量变量注入
利用PHP的超全局变量GLOBALS。当传入args=GLOBALS时,代码会执行var_dump(GLOBALS),从而打印出当前脚本作用域中的所有全局变量,包括从flag1.php文件引入的flag变量。
args="GLOBALS",所以args就变成了GLOBALS,而$GLOBALS是一个包含所有全局变量的数组。通过打印这个数组,我们可以直接看到flag变量的值,无需猜测具体的变量名。
构造payload:
bash
http://1117.72.52.127:18588/?args=GLOBALS
