10.26_$GLOBALS超全局变量

“百度杯”CTF比赛 2017 二月场
1、类型:MiscWeb 题目名称:爆破-1
题目内容:

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

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

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

payload:http://2a1038c49f204eebb6a6dcc63101a813720dd25d6d5044a4.changame.ichunqiu.com/?hello=GLOBALS
效果图:
在这里插入图片描述
$GLOBALS的作用:引用全局作用域中可用的全部变量。
这样就会打印出当前定义的所有变量,也包括 include 的文件中的变量,flag 也存在在这些变量中。
var_dump()函数:会返回数据变量的类型和值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值