參考blog
攻防世界 web高階 unserialize3 題目
執行得到
重點關注被序列化的物件屬性個數
當序列化字串當中屬性個數值大於實際的屬性個數時,就會導致反序列化異常,從而跳過__wakeup函式
與序列化和反序列化的魔術方法主要是:
__construct() //當乙個物件建立時被呼叫
__destruct() //物件被銷毀時觸發
__wakeup() //使用unserialize時觸發
__sleep() //使用serialize時觸發
__tostring() //把類當做字串時觸發
__get() //用於從不可訪問的屬性讀取資料
__set() //用於將資料寫入不可訪問的屬性
反序列化即 字串轉換成原來的變數
而序列化 是 變數變成字串
所以
獲取xctf類的序列化結果,再測試下是否返回反序列化的結果,然後把屬性值改為2即可,通過code傳遞,最後返回flag。
攻防世界 unserialize3
開啟之後是個 審計 還是先看一眼unserialize是個啥吧 wakeup 函式用法 wakeup 是用在反序列化操作中。unserialize 會檢查存在乙個wakeup 方法。如果存在,則先會呼叫 wakeup 方法。像下面的這個,他的輸出就是hello,而不是反序列化後的值 class a ...
攻防世界之unserialize3
題目 新知識 serialize 序列化函式,將物件轉化為可儲存可傳輸的字串 unserialize 反序列化,將字串轉為原來的物件 array a b banana c coconut 序列化陣列 s serialize a echo s echo 反序列化 o unserialize s pri...
攻防世界 十二 unserialize3
一道php反序列化的題 關鍵點 將類巴拉下來進行例項化,將例項化的物件進行序列化,然後再替換繞過 wakeup方法,如下 class xctf 例項化類 a newxctf 進行序列化 a serialize a 輸出檢視以下 echo a echo 替換繞過 wakeup方法 a str repl...