【安全笔记】Web安全之-变量覆盖

admin 2023年9月14日08:09:34评论24 views字数 893阅读2分58秒阅读模式

变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。

相关函数:extract(),import_request_variables,parse_str()

extract

extract() 函数能够将变量从数组导入到当前的符号表,其定义为

int extract ( array $var_array [, int $extract_type [, string $prefix ]] )

其中,第二个参数指定函数将变量导入符号表时的行为,最常见的两个值是 EXTR_OVERWRITEEXTR_SKIP

当值为 EXTR_OVERWRITE 时,在将变量导入符号表的过程中,如果变量名发生冲突,则覆盖所有变量;值为 EXTR_SKIP 则表示跳过不覆盖。若第二个参数未指定,则在默认情况下使用 EXTR_OVERWRITE

当 extract() 函数从用户可以控制的数组中导出变量时,可能发生变量覆盖。

import_request_variables

import_request_variables 将 GET、POST、Cookies 中的变量导入到全局,使用这个函数只用简单地指定类型即可。

<?php
$auth = "0";
import_request_variables("G");
if ($auth == 1) { echo "private!";
} else { echo "public!";
}
?>

import_request_variables("G") 指定导入 GET 请求中的变量,提交 test.php?auth=1 出现变量覆盖。

parse_str()

parse_str() 函数通常用于解析 URL 中的 querystring,但是当参数值可以被用户控制时,很可能导致变量覆盖。

// var.php?var=new  变量覆盖
$var = "init";
parse_str($_SERVER["QUERY_STRING"]);
print $var;

与 parse_str() 类似的函数还有 mb_parse_str()。

原文始发于微信公众号(赛博之眼CyberEye):【安全笔记】Web安全之-变量覆盖

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月14日08:09:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【安全笔记】Web安全之-变量覆盖https://cn-sec.com/archives/2035721.html

发表评论

匿名网友 填写信息