BUGKU-变量1

1、打开一道题,发现源码展示,先看源码

flag In the variable ! <?php  

error_reporting(0);
include "flag1.php";    //// 引入flag1.php文件代码
highlight_file(__file__);    
if(isset($_GET['args'])){     // 通过get方式传递 args变量才能执行if里面的代码
    $args = $_GET['args'];       
    if(!preg_match("/^\w+$/",$args)){         // 这个正则表达式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小写字母和0到9以及下划线组成
        die("args error!");
    }
    eval("var_dump($$args);");    //此函数显示一个或多个表达式的信息,包括表达式的类型与值
}
?>

 

2、本题涉及的一些基础知识

get型传参,args要满足正则匹配的内容

  • ^:匹配输入字符串的开始位置

  • \w:包含下划线的任意单词字符字符

  • +:匹配前面的子表达式一次或多次

  • $:匹配输入字符串的结束位置

 

 isset: 用于检测变量是否已设置并且非 NULL。

prep_match: 用于执行一个正则表达式匹配。

error_reporting(0)关闭错误显示。

include “flag.php”页面包含flag.php页面。

highlight_file(_file_)页面进行语法高亮显示。

 

3、解题思路

flag In the variable ! 提示 flag 在变量中

根据!preg_match("/^\w+$/",$args)得知,arg只能是任意字母,数字,下划线,汉字的字符组成

使用GLOBALS得到全部变量

 

 
posted @ 2022-05-12 22:44  heartBroken  阅读(525)  评论(0编辑  收藏  举报