extract 變數覆蓋

2021-08-22 05:53:09 字數 2462 閱讀 7753

php extract() 函式從陣列中把變數匯入到當前的符號表中。對於陣列中的每個元素,鍵名用於變數名,鍵值用於變數值。

下面是php的超級全域性變數,可以了解乙個特性,全是陣列。 gl

obal

s,所有

全域性變數

陣列g lo

bals

,所有全

局變數數

組_server, 伺服器環境變數陣列 ge

t,通過

get方

法傳遞給

指令碼的變

量陣列 get

,通過g

et方法

傳遞給腳

本的變數

陣列

_post, 通過post方法傳遞給指令碼的變數陣列 co

okie

,coo

kie變

量陣列 coo

kie,

cook

ie變數

陣列

_request,所有使用者輸入的變數陣列,包括ge

t,g et

,_post和co

okie

所包含的

輸入內容

c oo

kie所

包含的輸

入內

容_files,與檔案上傳相關得變數陣列 en

v,環境

變數陣列

e nv

,環境變

量數

組_session,會話變數陣列

可以通過本地測試一下 phpstudy

寫入 1.php

<?php

var_dump($_get);

?>

訪問 得到array(2)

extract(array,extract_rules,prefix)

<?php

$a = 'original';

$my_array = array("a" => "cat","b" => "dog", "c" => "horse");

extract($my_array);

echo

"\$a = $a; \$b = $b; \$c = $c";

?>

輸出: a=

cat;

a =c

at

;b = dog;

$c = horse

<?php

$a = 'original';

$my_array = array("a" => "cat","b" => "dog", "c" => "horse");

extract($my_array, extr_prefix_same, 'dup');

echo

"\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";

?>

輸出: a=

orig

inal

; a=o

rigi

nal;

b = dog; c=

hors

e;c =h

orse

;dup_a = cat;

字首和陣列鍵名之間會自動加上乙個下劃線。

extract(),它的主要作用是將陣列展開,鍵名作為變數名,元素值為變數值

可以說為陣列的操作提供了另外乙個方便的工具,比方說,可以很方便的提取po

st或者

p os

t或

者_get的元素,對表單提交上來的內容不能不用一一賦值,直接使用下面**:

form.html

1.php

<?php

@extract($_post,extr_skip);

echo

$ai?>

當輸入 jkl 輸出 為 jkl 可以看到 我們沒有用po

st去接

受變數 pos

t去接受

變數

a 把陣列中的鍵名直接註冊為了變數,就像把po

st[a

i]直接

註冊為了

p os

t[ai

]直接注

冊為

了ai

安全的做法是確定register_globals=off後,在呼叫extract()時使用extr_skip保證已有變數不會被覆蓋。

<?php

$auth='0';

extract($_get);

if($auth==1)

else

?>

當構造時,可列印出private!

PHP 變數覆蓋 extract

這個函式 是因為看了下 phpcms 前台 getshell 發現這些函式果然乙個都不能漏。該函式官方文件 在此 多翻官方文件,好多人跟我說過這個習慣 原因 無非是 變數覆蓋,至於 能造成什麼危害 就看下邊 怎麼寫了。int extract array array int flags extr ov...

關於變數覆蓋

由於private變數受訪問許可權的限制,它不能被覆蓋。屬性的值取父類還是子類並不取決於我們建立物件的型別,而是取決於我們定義的變數的型別 既 等號前面的型別 friendly protected和public修飾符並不影響屬性的覆蓋。靜態變數和靜態常量屬於類,不屬於物件,因此它們不能被覆蓋。常量可...

變數覆蓋漏洞

變數覆蓋指的是可以用我們自定義的引數值替換程式原有的變數值 經常引發變數覆蓋漏洞的函式有 extract parse str 和import request variables 函式 一 使用函式不當 1.extract 函式 該函式有三種情況會覆蓋掉已有變數 第一種情況是第二個引數為extr ov...