bugku-web(变量1)

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

这是一个代码审计的题目

 

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

对‘$$args'的分析:

example:

1 <?php
2 $plan = 'Binary';        //变量plan的值为'Binary'的字符串
3 $Binary = 'handsome';    //再把变量plan的值设为一个变量的变量名,而这个变量的值为'handsome'
4 echo $$plan.'</br>';     //打印$$plan,其实就相当于打印$[$plan]=$[Binary]='handsome'
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就在返回的结果中。

 

posted @ 2019-10-11 13:16  timer9527  阅读(231)  评论(0编辑  收藏  举报