bugku web 变量1
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);"); } ?> 这个好像叫做php代码审计 error_reporting(0)关闭错误报告 include "flag1.php"执行flag1.php 判断是否通过get传入了参数,并且将参数赋值给$args 下一行是通过正则表达式判断$args是否全部由字母数字和下划线组成 如果是的话执行var_dump($$args); var_dump就是打印,不过会递归打印 $$args这个还是值得一说的,一般的变量只有一个$,有两个$$的变量叫做可变变量 举个例子 $a=b $b=hhh echo $$a 这时候会输出hhh 代码就分析完了,flag1.php中提示flag在变量中,现在的问题就是如何打印出所有的变量 php中有一个神奇的变量叫做$GLOBALS,它是一个数组,里面存放着所有的变量 所以只要构造?args