首页
学习
活动
专区
圈层
工具
发布

网络安全自学篇-PHP代码审计(八)

变量覆盖

攻击者使用自定义的参数去替换应用程序未经过初始化的变量值。

挖掘思路:

文件上传页面覆盖白名单列表 用户注册页面覆盖未初始化的变量导致SQL注入

相关函数:

extract、import_request_variables、parse_str、$$

1、extract函数

代码语言:javascript
复制
 extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] ) : int// array一个关联数组。此函数会将键名当作变量名,值作为变量的值。 对每个键/值对都会在当前的符号表中建立变量,并受到 flags 和 prefix 参数的影响。  EXTR_OVERWRITE,如果有冲突,覆盖已有的变量。prefix附加前缀。第二个参数有三种情况会产生变量覆盖://1、 EXTR_OVERWRITE 如果有冲突,覆盖已有的变量。//2、 EXTR_PREFIX_SAME 如果有冲突,在变量名前加上前缀 prefix。 //3、 EXTR_IF_EXISTS 仅在当前符号表中已有同名变量时,覆盖它们的值。

EXTR_OVERWRITE:

EXTR_PREFIX_SAME:

EXTR_IF_EXISTS:

2、import_request_variables函数(PHP<5.4)

3、parse_str函数

4、$$

变量a可被传入的参数覆盖。

漏洞防范:

1、php.ini中register_globals = OFF 2、使用原始变量数组,入POST、_POST、POST、_GET等 3、不使用foreach变量$_GET变量 4、判断变量是否注册

下一篇
举报
领券