代码审计day10

 · 2020-3-26  ·次阅读


变量覆盖

变量覆盖是指变量未被初始化,我们可以自定义参数值替换程序原有的变量值

extract()变量覆盖

int extract ( $array , extract_rules,prefix )
$array 关联的数组,受第二个和第三个参数的影响
extract_rules 对待非法/ 数字和冲突的键名的方法将根据取出标记
prefix 仅在第二个参数特殊时需要,添加前缀

危险函数

EXTR_OVERWRITE-默认。如果有冲突,则覆盖已有的变量。
EXTR_SKIP- 如果有冲突,不覆盖已有的变量。( 忽略数组中同名的元素)
EXTR_PREFIX_SAME .如果有冲突,在变量名前加上前缀prefix。自PHP4.0.5起,这也包括了对数字索引的处理
EXTR_PREFIX_ALL- 给所有变量名加上前缀prefx (第三个参数)
EXTR_PREFIX_INVALID -仅在非法或数字变量名前加上前缎prefix。本标记是PHP4.0.5新加的。
EXTR_IF_EXISTS- 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如$_REQUEST中提取值覆盖这些变量的场合。本标记是PHP4.2.0新加的。
EXTR_PREFIX_IF_EXISTS-仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是PHP4.2.0新加的。
EXTR_REFS-将变量作为引用提取。这有力地表明了导入的变量仍然引用了var_array 参数的值。可以单独使用这个标志或者在extract_type中用OR与其它任何标志结合使用。本标记是PHP4.3.0新加的。

parse_str()变量覆盖

void parse_str ( string $encoded_string [, array &$result] )
$encoded_string 输入的字符串
&$result 变量将会以数组元素的形式存入到这个数组,作为替代

import_request_variables()

bool import_request_variables ( string $type [, string $prefix ] )
$type 指定需要导入的变量。可以用字母‘G'、‘P'和 ‘C‘分别表示GET、POST和Cookie
$prefix 变量名前缀