返回介绍

4.3.2 PHP 代码执行漏洞

发布于 2024-10-03 16:34:04 字数 1426 浏览 0 评论 0 收藏 0

代码执行函数

PHP 中可以执行代码的函数。如 eval()、assert()、system()、exec()、shell_exec()、passthru()、 escapeshellcmd()、pcntl_exec() 等

文件包含代码注射

文件包含函数在特定条件下的代码注射,如 include()include_once()require()require_once()

allow_url_include=On ,PHP Version>=5.2.0 时,导致代码注射。

include.php

<?php
include($_GET[‘a’]);
?>

URL: http://localhost/test/include.php?a=data:text/plain,%3C?php%20phpinfo();?%3E

正则匹配代码注射

众所周知的 preg_replace() 函数导致的代码注射。当 pattern 中存在/e 模式修饰符,即允许执行代码。这里我们分三种情况讨论下

1 ). preg_replace() pattern 参数注射

pattern 即第一个参数的代码注射。

magic_quotes_gpc=Off 时,导致代码执行。

demo code 3.1: preg_replace1.php

<?php
echo $regexp = $_GET[‘reg’];
$var = ‘<php>phpinfo()</php>’;
preg_replace(`/<php>(.*?)$regexp`, ‘\1’, $var);
?>

URL: preg_replace1.php?reg=%3C/php%3E/e

2 ). preg_replace() replacement 参数注射

replacement 即第二个参数的代码注射,导致代码执行。

3 ). preg_replace() 第三个参数注射

我们通过构造 subject 参数执行代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文