网站有哪些费用多少钱,为什么最近好多网站维护,毕设做购物网站,钟点工拿到题目后是一串PHP代码#xff0c;给到提示是flag在变量中#xff0c;接下来进行代码审计 error_reporting(0)#xff1a;关闭错误报告 include “flag1.php”:包含flag1.php文件 highlight_file(_file_)#xff1a;页面进行语法高亮显示 isset($_GET[‘args’])#xf… 拿到题目后是一串PHP代码给到提示是flag在变量中接下来进行代码审计 error_reporting(0)关闭错误报告 include “flag1.php”:包含flag1.php文件 highlight_file(_file_)页面进行语法高亮显示 isset($_GET[‘args’])判断有没有用get方法传一个args的参数如果有才执行以下的if语句 preg_match()正则表达式匹配函数 /^\w$/\w表示任意一个数字、字母或下划线匹配前面的子表达式一次或多次^和$用在一起表示整行匹配 var_dump()以更易识别的方式输出变量的类型和值 eval()函数将字符串当成php代码执行 $$args是一个可变变量将$args的值当成另外一个变量的名称所以给$args传递值就$$args就可以表示另外一个变量 我是这样理解的 因为源码已经提示了flag在变量中然后这里使用的GET的方式接受变量又做了正则匹配意思就是说如果传入的参数不是以字符数字和下划线组成的就输入args error 理解完构造因为提示说flag都存在于变量中在PHP里有一堆预定义变量是可以直接拿来使用的预定义变量$GLOBALS就包含了当前脚本中已经定义的所有变量 所以我们可以构造?argsGLOBALS来回显当前脚本的所有变量信息 获得flag