學習於:
序列化就是將物件轉換成字串。字串包括、屬性名、屬性值、屬性型別和該物件對應的類名。
反序列化則相反將字串重新恢復成物件。
物件的序列化利於物件的儲存和傳輸,也可以讓多個檔案共享物件。
__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...