CTF || [“百度杯”CTF比赛 2017 二月场]爆破-1

题目内容:flag就在某六位变量中。
题目

include "flag.php";
$a = @$_REQUEST['hello'];
if(!preg_match('/^\w*$/',$a )){//正则表达式^匹配一行的开头,$表示结束。\w表示匹配包括下划线的任何单词字符,等价于'[A-Za-z0-9_]'。*号:匹配前面的子表达式零次或多次。
  die('ERROR');
}
eval("var_dump($$a);");//var_dump — 打印变量的相关信息
show_source(__FILE__);//__FILE__当前运行文件的完整路径和文件名。
?>

分值:10分

这个代码的作用是如果匹配正则表达式/^\w*$/,就打印变量$$a
$a是hello,$$a是六位变量$hello
由于$a在函数中,所以函数之外无法访问。如果要访问,将hello修改为超全局变量GLOBALS。
在URL后加?hello=GLOBALS,将参数hello修改为Globals
实际执行语句:

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

$GLOBALS的作用:引用全局作用域中可用的全部变量。
这样就会打印出当前定义的所有变量,也包括 include 的文件中的变量,flag 也存在在这些变量中。

参考:
PHP 全局变量 - 超全局变量
超全局变量
$GLOBALS
百度杯-二月场(Misc-Web)爆破-1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,008评论 0 38
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,256评论 0 13
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,427评论 0 6
  • 窗外飞驰而过的景色,曾经多么的熟悉。今天看起来却那样的陌生、那样的模糊。 路途曲折、奔波劳累,最终还是坐上了开...
    子猫疯阅读 168评论 0 0
  • 在冬至之夜,「莲城读书会」第50期线下活动现场迎来了《健康馆》的第二位分享嘉宾-湘潭市中心医院院长助...
    眼角的微笑a阅读 571评论 0 0