美文网首页CTFCTF
[百度杯-二月场](Misc-Web)爆破-1

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

作者: 王一航 | 来源:发表于2017-02-19 17:49 被阅读407次

简介 :

分值: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 也存在在这些变量中

相关文章

网友评论

    本文标题:[百度杯-二月场](Misc-Web)爆破-1

    本文链接:https://www.haomeiwen.com/subject/sjpjwttx.html