CTFer成长记录——CTF之Web专题·bugku-变量1
一、题目链接
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
三、总结
本题考察可变变量$$和全局变量,是一个知识点类型的题目。