PHP反序列化漏洞(什麼是反序列化漏洞及操作)

2021-09-24 01:27:37 字數 1520 閱讀 9903

**一.**在理解這個漏洞前,你需要先搞清楚php中serialize(),unserialize()這兩個函式。

序列化serialize()

序列化說通俗點就是把乙個物件變成可以傳輸的字串,比如下面是乙個物件:

class s

s =n

ews(

);//

建立乙個

物件se

rial

ize(

s=new s(); //建立乙個物件 serialize(

s=news

();/

/建立一

個物件s

eria

lize

(s); //把這個物件進行序列化

序列化後得到的結果是這個樣子的:o:1:「s」:1:

o:代表object

1:代表物件名字長度為乙個字元

s:物件的名稱

1:代表物件裡面有乙個變數

s:資料型別

4:變數名稱的長度

test:變數名稱

s:資料型別

7:變數值的長度

pikachu:變數值

**二.**反序列化unserialize()

就是把被序列化的字串還原為物件,然後在接下來的**中繼續使用。

$u=unserialize(「o:1:「s」:1:」);

echo $u->test; //得到的結果為pikachu

序列化和反序列化本身沒有問題,但是如果反序列化的內容是使用者可以控制的,且後台不正當的使用了php中的魔法函式,就會導致安全問題

常見的幾個魔法函式:

__construct()當乙個物件建立時被呼叫

__destruct()當乙個物件銷毀時被呼叫

__tostring()當乙個物件被當作乙個字串使用

__sleep() 在物件在被序列化之前執行

__wakeup將在序列化之後立即被呼叫

漏洞舉例:

class s

}$s = $_get['test'];

@$unser = unserialize($a);

payload:o:1:"s":1:

**四.** 在反序列化視窗中新增內容提交給後台

五.xxe外部實體引用payload

php反序列漏洞 例項 PHP反序列化漏洞

雖然胳膊廢了,也不能停止我更新的腳步。寫個簡單點的吧 0x00 何為類和物件 說到序列化和反序列化就不得不提到兩個詞 類和物件 那麼什麼是類,什麼是物件 教科書式的答案是類是物件的抽象,物件是類的例項 那啥叫個抽象,啥叫個例項呢 簡單的說,類就是物件的乙個標準模板,而物件就是按照模板做出來的實物 一...

PHP反序列化漏洞

序列化簡單利用 serialize 序列化 使用函式serialize 可將例項序列化為字串 unserialize 反序列化 使用函式unserialize 可將序列化的字串還原 示例 class example unserialize get code 漏洞利用 構造漏洞利用的 儲存為test....

PHP反序列化漏洞

前幾天安恆月賽兩道web題中有一道題是關於php反序列化的,然後剛好前幾天剛好看過這個知識點,於是乎這次比賽才沒有爆零,總算是寫出來了一道題 doge 所有php裡面的值都可以使用函式serialize 來返回乙個包含位元組流的字串來表示。unserialize 函式能夠重新把字串變回php原來的值...