i春秋 “百度杯”CTF比赛 2017 二月场 “爆破”
开启环境可直接看到源码 。
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
if(!preg_match('/^\w*$/',$a )){
die('ERROR');
}
eval("var_dump($$a);");
show_source(__FILE__);
?>
根据题目提示 flag藏在某6位变量中
include "flag.php";
已经将flag包含进该页面
审计可以知道 eval("var_dump($$a);");
中$$a
是可变变量,传入hello=flag
得到题目环境中提示flag藏在6位变量中。
但是preg_match('/^\w*$/',$a )
为正则,\w
仅匹配数字、字母以及下划线。
该题的爆破意为爆破flag的变量名,我们可以传入PHP 的超全局变量PHP:$GLOBALS来将所有变量全部输出,即可得到flag。