Directorio de artículos
1. Descripción general de la ejecución del código
Definición de ejecución de código:
------ Cuando la aplicación llama a algunas funciones que pueden convertir una cadena en código (como eval en PHP), no considera si el usuario controla la cadena, lo que provocará una vulnerabilidad de ejecución de código. La ejecución remota de código en realidad consiste en llamar al código del sitio web del servidor para su ejecución.
------ La vulnerabilidad de ejecución de código significa que la aplicación en sí no está estrictamente filtrada y los usuarios pueden inyectar código en la aplicación a través de solicitudes de ejecución.
2. Funciones relacionadas con la ejecución de código
- PHP: evaluar, afirmar
- Javascript: evaluación
- Vbscript: ejecutar, evaluar
- Python: ejecutivo
- Java: no existe una función en Java que pueda convertir directamente cadenas en ejecución de código, similar a la función eval en PHP, sin embargo, existe un mecanismo de reflexión y existen varios motores de expresión basados en mecanismos de reflexión, como: OGNL, SpEL. , MVEL, etc. Estos pueden causar vulnerabilidades de ejecución de código.
1、evaluar
Para ejecutar una cadena como función, es necesario pasar una declaración completa, que debe terminar con punto y coma. Las funciones más utilizadas son:
<?php eval('echo "hello";'); ?>
2 、 afirmar
Determine si es una cadena; de ser así, se ejecutará como código.
在php7.0.29之后的版本不支持动态调用
低版本
<?php assert($_POST['a']); ?>
7.0.29之后
<?php
$a = 'assert';
$a(phpinfo());
?>
3. ${ } ejecutar código
Se analizará el código php intermedio.
${
phpinfo()};
3. La diferencia entre ejecución de comandos y ejecución de código.
-
Las funciones involucradas son diferentes.
-
Los métodos de ejecución son diferentes:
Ejecución de comandos: generalmente se refiere a
远程
la ejecución del código de comando del sistema operativo: generalmente se refiere al código de script