经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
bugku-web(变量1)
来源:cnblogs  作者:年过二十梦方醒  时间:2019/10/12 9:07:20  对本文有异议

记性不好,老忘事于是决定把做的题目记录一下

这是一个代码审计的题目

 

需要传入有个args参数,通过eval来执行var_dump来打印一些东西。但是它打印的是$$args而不是$args。

对‘$$args'的分析:

example:

  1. 1 <?php
  2. 2 $plan = 'Binary'; //变量plan的值为'Binary'的字符串
  3. 3 $Binary = 'handsome'; //再把变量plan的值设为一个变量的变量名,而这个变量的值为'handsome'
  4. 4 echo $$plan.'</br>'; //打印$$plan,其实就相当于打印$[$plan]=$[Binary]='handsome'
  5. 5 echo $Binary.'</br>'; //打印$Binary,其结果为'handsome'和上一行的打印结果一样

有了这个例子,就可以操作了。传入的是args参数,而传入的参数将会被当作一个变量名并打印它的变量值。比如传入一个x。则有$args=x,而执行var_dump($$args)时相当于执行var_dump($x),而此时程序里没有x这个变量,所以就会返回一个NULL值显示在浏览器上,这变量没有意义。所以传入的参数得是一个有意义的变量,PHP恰好有这类似的东西,如$GLOBALS,$_GET,$POST...,$GLOBALS这个变量存储了所有的变量。所以传入参数‘args=GLOBALS',var_dump()将打印$GLOBALS,flag就在返回的结果中。

 

原文链接:http://www.cnblogs.com/planBinary/p/11653594.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号