CTFer成长记录——CTF之Web专题·bugku-变量1

发布时间 2023-07-27 17:46:03作者: MiracleWolf

一、题目链接

ctf.bugku.com/challenges/detail/id/76.html

二、解法步骤

  打开网站:提示flag藏在变量中:

  preg_match()后接的正则表达式:^开始, \w表示任意一个单词字符,即[a-zA-Z0-9_] ,+将前面的字符匹配一次或多次,$/结尾。

  这里需要注意到$$args这个用法,如果说$args="hello"$hello="world",那么echo $$args结果是world,相当于打印一次$args,然后将它的值作为一个变量再次打印。

  于是我们需要传入args的值,让它能够存在于题目已有的php文件中的一个变量。一开始就在php文件中的变量有:全局变量、超全局变量。超全局变量有:$GLOBALS,$_SERVER,$_REQUEST,$_POST,$_GET,$_FILES,$_ENV,$_COOKIE,$_SESSION。那么GLOBALS这种全局变量用于在 PHP 脚本中的任意位置访问全局变量,PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。(from W3SCHOOL)

最后我们使args = GLOBALS,查看题目文件的全局变量:

  

  找到flag

三、总结

  本题考察可变变量$$和全局变量,是一个知识点类型的题目。