gpt4 book ai didi

php - 如何演示 extract($_POST) 的利用?

转载 作者:IT王子 更新时间:2023-10-29 00:12:09 25 4
gpt4 key购买 nike

不是 PHP 开发人员,但我正在评估 PHP5 应用程序的安全性。

作者在函数之外的某些地方依赖于 extract($_POST)extract($_GET)

我的建议是调用 extract($_POST, EXTR_PREFIX_ALL, 'form') 并相应地更改代码,但他的立场是无论如何都会在后续包含中重新定义任何变量。

我可以通过在帖子值中提供例如 _ENV=something 来轻松更改超全局变量,但是超全局变量是数组,我正在将它们转换为字符串,我不确定它是否可以有恶果。

我可以看一下 isset() 的几种用法,然后从那里往回走.. 但我认为存在不需要知识或来源的占卜的此类攻击。

是否有一些有趣的变量要设置/更改,也许在 PHP 的内部?

谢谢

最佳答案

要评估“可能”,试试这个:

File:htdocs/mix/extraction.php

<?php
extract($_GET);
var_dump($_SERVER);//after extract
?>

然后这样调用它:

http://localhost/mix/extraction.php?_SERVER=test

在我的 Xampp 上提取后,输出看起来像这样:

string(4) "test"

如果有人对您的变量命名一无所知,并且您在 $_POST 或 $_GET 全局变量上使用 extract,那么您的问题就很严重了。通过一些时间和工作,通过尝试和错误找出一些命名是可能的。

在不知道你的来源的情况下,入侵者可能会尝试劫持任何全局变量,如 $_SESSION(但这里只有你执行 session_start(); 在提取($_GET)、$_COOKIE 或 $_SERVER 和甚至为它们设置特定的值:

//localhost/mix/extraction.php?_SERVER[HTTP_USER_AGENT]=Iphone

如果你像这样使用提取物:

extract($var,EXTR_SKIP);

extract($var,EXTR_PREFIX_SAME,'prefix');

extract($var,EXTR_PREFIX_ALL,'prefix');

那么你就绝对安全了。

关于php - 如何演示 extract($_POST) 的利用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3837789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com