题目描述
题目截图如下:
进入场景看看:
<?phpinclude "flag.php";$a = @$_REQUEST['hello'];eval( "var_dump($a);");show_source(__FILE__);
?>
解题思路
- PHP代码审计咯
相关工具
- 百度搜索PHP相关知识
解题步骤
分析脚本就行:
1. include "flag.php";
引入了一个名为 flag.php 的文件。
2. $a = @$_REQUEST['hello'];
从 HTTP 请求的参数中获取名为 hello 的值,并将其赋给变量 $a。也就是说:request是要请求得到hello的信息,及a=的是hello的信息,而不是hello本身.
/?hello=
eval( "var_dump($a);");
使用 eval() 函数将 $a 的值作为 PHP 代码执行,并将结果打印出来。试试?
/?hello=flag.php
并么有出现,那可能是hello的值有问题,不能直接这么写?
因为flag.php是一个文件,所以需要使用file()函数来读取:
/?hello=file('flag.php')
show_source(__FILE__);
将当前文件的源代码输出到浏览器。这意味着我们可以直接查看该脚本的代码。
得到Flag
flag{7536e9c02aaf8a3ee1dc88e1f5018f27}
新知识点
-
var_dump()会将传入的变量打印到页面(变量类型,变量长度和变量值)
-
eval()会执行传入到其中的php代码
-
echo输出的是最终的结果(变量类型和字符串)
-
file():把整个文件读入一个数组中。数组中的每个单元都是文件中相应的一行,包括换行符在内。
需要把PHP基础学习一下,这很多都是关于PHP的基础代码审计!也不难!
有用的话,请
点赞收藏评论
,帮助更多的同学哦