php 代码审计之变量覆盖
(一)parse_str()—将字符串解析到变量中
<?php $a=''; parse_str($_SERVER['QUERY_STRING']); //$_SERVER['QUERY_STRING'] 保存url的查询部分 print $a; ?>
?a=1 即可完成覆盖
(二)extract()—从数组中将变量导入
<?php $a = ''; extract($_GET); print $a; ?>
?a=1即可完成覆盖
(三)import_request_variables()—将 GET/POST/Cookie 变量导入到全局作用域中 >php 4.1.0 <php 5.4.0
<?php //>php4.1.0 <php5.4.0 $a = '0'; import_request_variables('G'); print $a; ?>
在相应版本内?a=1即可覆盖
(四)register_globals=on <php 5.3
?a=1可直接覆盖 —— 将变量初始化避免此问题
若使用foreach()+unset()过滤 可用$GLOBAL逃出