百度杯 CTF比赛 2017 二月场 **1
1、
我们打开题目链接之后 可以看到这里给出了一段PHP代码
2、审析代码之后 我看可以看到 有一个@$_REQUEST[‘hello’] 可以让用户通过前端传参到后端
接着看到一个if选择语句中的 ‘/^\w*$/’ 这里其实是一个正则表达式
两个//表示开始和结束
^表示开始字符串
$表示结束字符串
\w表示包含【a-z,A-Z, _ , 0-9】
接着后面有一个变量 $a 基本可以得出 用户可以通过前端输入传参给 $a 再通过正则表达式进行运算
3、$$a 的意思 可以通过一个举例来理解:
$ $ str 可以理解为 $ ( $str ) ;
$ str =“cd”;那么就是 $ cd = $ $str = “landog”;
$ $str . = “ok”, . 为拼接字符,即 $ $str = $ $str . “ok”;
这里跟 $ a+=b => $a= $ a+b性质一样 (可以看php的运算符)
也就是 $ cd = $cd . “ok”,即 $cd = “landogok” ;
$ $str . ,这里的 . 是拼接字符 即 $ $str .= “ok” => $ $str = $$str . “ok”;
4、接下来就要用到PHP中的一个函数
$ GLOBALS — 引用全局作用域中可用的全部变量
5、我们通过URL进行传参
?hello=GLOBALS
得到如下界面 之后复制flag提交即可