BUGKU-web9[wp]

1.环境启动后看到如下代码:

flag In the variable ! // 提示你flag在变量里

<?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);");   //如果匹配
}
?> 

2.知识点

正则表达式讲解

\w :匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

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

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

$:匹配输入字符串结尾的位置。

preg_match函数讲解

preg_match()返回pattern的匹配次数。它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后将会停止搜索

搞懂以上两个知识点,再回头看上面的php代码。如果直接使用args=flag1.php,因为包含 . 这个符号,不匹配,会die,所以我们想到全局变量,构造payload:

url?args=GLOBALS

posted @ 2021-04-27 17:59  马猴烧酒孟优秀  阅读(73)  评论(0编辑  收藏  举报