CTF中的序列化與反序列化

2022-10-11 04:06:12 字數 830 閱讀 8237

學習於:

序列化就是將物件轉換成字串。字串包括、屬性名、屬性值、屬性型別和該物件對應的類名。

反序列化則相反將字串重新恢復成物件。

物件的序列化利於物件的儲存和傳輸,也可以讓多個檔案共享物件。

__construct() 建立物件時呼叫

__destruct() 銷毀物件時呼叫

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

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

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

o:3:"ctf":3";s:4:"name";s:7:"sch0lar";s:3:"age";s:2:"18";}

o代表物件 因為我們序列化的是乙個物件 序列化陣列則用a來表示

3 代表類名字佔三個字元

ctf 類名

3 代表三個屬性

s代表字串

4代表屬性名長度

flag屬性名

s:13:"flag" 字串 屬性值長度 屬性值

根據訪問控制修飾符的不同 序列化後的 屬性長度和屬性值會有所不同,所以這裡簡單提一下

public(公有)

protected(受保護)

private(私有的)

protected屬性被序列化的時候屬性值會變成:%00*%00屬性名

private屬性被序列化的時候屬性值會變成:%00類名%00屬性名

就像這樣

o:4:"name":2://這裡是private屬性被序列化

CTF中的序列化與反序列化

記一些ctf出現的序列化與反序列化的知識點和題目。序列化和反序列化的概念 序列化就是將物件轉換成字串。字串包括 屬性名 屬性值 屬性型別和該物件對應的類名。反序列化則相反將字串重新恢復成物件。物件的序列化利於物件的儲存和傳輸,也可以讓多個檔案共享物件。序列化中常見的魔法函式 construct 建立...

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...

序列化與反序列化

把複雜的資料型別壓縮到乙個字串中 serialize 把變數和它們的值編碼成文字形式 unserialize 恢復原先變數 eg stooges array moe larry curly new serialize stooges print r new echo print r unserial...