zoukankan      html  css  js  c++  java
  • 变量覆盖

    0X00 背景

    总结一下自己对变量覆盖漏洞的见解,此漏洞主要产生于白盒代码审计。

    0X00 什么是变量覆盖

    顾名思义,自定义的变量替换原有变量的情况称为变量覆盖漏洞
    主要涉及的函数有以下四个:
    extract() parse_str() importrequestvariables() $$

    $$ 导致的变量覆盖问题($$这种称为可变变量)

    1.一个可变变量获取了一个普通变量的值作为这个可变变量的变量名

    2.漏洞产生:通过forreach来遍历数组中的值,然后再将获取到的数组键名作为变量,数组中的键值作为变量的值,因此产生变量覆盖漏洞
    $value) { ${$key} = $value; } echo $a; ?>
    get得到的数据$key和$value,关键第三行,${$key}用get传进来的$key作为新的变量,将get传进来的
    $value赋值给它
    get?a=1第三行会解析为$a=1,造成了变量覆盖

    extract()函数导致的变量覆盖

    extract()该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每一个元素,将在当前符号表中创建对应的一个变量

    parse_str函数导致的变量覆盖问题

    parse_str()函数用于把查询字符串解析到变量中,如果没有array参数,则由该函数设置的变量
    将覆盖已存在的变量名

    import_request_variables()使用不当

    import_request_variables将GET/POST/COOKIE变量导入到全局作用域中
    import_request_variables()函数就是把GET、POST、COOKIE的参数注册成变量,用在register_globals被禁止的时候

  • 相关阅读:
    洛谷 P1879 [USACO06NOV]玉米田Corn Fields
    洛谷 P2709 小B的询问
    洛谷 P1972 [SDOI2009]HH的项链
    洛谷 P3648 [APIO2014]序列分割
    洛谷 P2157 [SDOI2009]学校食堂
    洛谷 P1198 [JSOI2008]最大数
    洛谷 P3870 [TJOI2009]开关
    【模板】线段树2
    【模板】线段树1
    git之远程标签下载(远程分支)
  • 原文地址:https://www.cnblogs.com/SnowSec/p/14481895.html
Copyright © 2011-2022 走看看