PHP代码审计高危函数

变量覆盖

extract 函数

代码示例

1
2
3
4
5
6
7
8
<?php
$a="aaaaa"
$my_by = array('a'=>"bbbbbb");
extract($my_by);

echo $a; //输出bbbbb

?>

parse_str函数

parse_str函数的作用就是解析字符串并注册成变量,在注册变量之前不会验证当前变量是否存在,所以直接覆盖掉已有变量

代码示例

1
2
3
4
5
<?php
$a="1";
parse_str("a=bbbb");
echo $a;
?>

import_request_variables() 函数

1
2
3
4
5
<?php
$a = 1; //原变量值为1
import_request_variables('GP'); //传入参数时注册变量
print_r($a); //输出结果为2
?>

远程文件包含

allow_url_include在PHP 5.2.0后默认设置为off。

1
2
3
4
5
<?php
include $_GET['a'];
?>

http://localhost/1.php?a=http://localhost/phpingo.php