PHP代码审计-常见危险函数
PHP代码执⾏函数
eval & assert & preg_replace
eval 函数
说明:
mixed eval ( string $code )
把字符串 code 作为PHP代码执⾏。
注意:
函数 eval() 语⾔结构是 ⾮常危险的, 因为它允许执⾏任意 PHP 代码。 它这样⽤是很危险的。如果您仔细的确认过,除了使⽤此结构以外 别⽆⽅法, 请多加注意,不要允许传⼊任何由⽤户 提供的、未经完整验证过的数据。
参数
code:
需要被执⾏的字符串
代码不能包含打开/关闭 PHP tags。⽐如,'echo "Hi!";' 不能这样传⼊:'<?php echo "Hi!"; ?>'。但仍然可以⽤合适的PHP tag 来离开、重新进⼊ PHP 模式。⽐如 'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";' 。
除此之外,传⼊的必须是有效的 PHP 代码。所有的语句必须以分号结尾。⽐如'echo "Hi!"'会导致⼀个 parse error,⽽'echo "Hi!";'则会正常运⾏。
return 语句会⽴即中⽌当前字符串的执⾏。
代码执⾏的作⽤域是调⽤ eval() 处的作⽤域。因此,eval() ⾥任何的变量定义、修改,都会在函数结束后被保留。
返回值
eval() 返回 NULL,除⾮在执⾏的代码中return了⼀个值,函数返回传递给return的值。 PHP 7 开始,执⾏的代码⾥如果有⼀个 parse error,eval()会抛出 ParseError 异常。在 PHP 7 之前, 如果在执⾏
的代码中有 parse error,eval()返回FALSE,之后的代码将正常执⾏。⽆法使⽤ set_error_handler()捕获 eval()中的解析错误。
简单说
mixed eval ( string $code ) 把字符串 $code 作为PHP代码执⾏。
很多常见的 webshell 都是⽤eval 来执⾏具体操作的。
<?php @eval($_POST['v']);?> —— 常见的⼀句话⽊马。
php手册官方中文版
eval⼀般出现的场景是

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。