一道反序列化題:php
打開後給出了一個php類,咱們能夠控制code值:數據庫
`unserialize()` 會檢查是否存在一個 `__wakeup()` 方法。若是存在,則會先調用 `__wakeup` 方法,預先準備對象須要的資源。code
做用:__wakeup() 常常用在反序列化操做中,例如從新創建數據庫鏈接,或執行其它初始化操做。對象
咱們先給這個類建立一個對象,而後輸出這個對象的序列化值:blog
而後將序列化結果拿給?code參數進行get請求資源
發現執行了_wakeup方法,那麼怎麼繞過這個方法呢? 字符串
百度了一下,當序列化字符串表示對象屬性個數的值大於真實個數的屬性時就會跳過__wakeup
的執行get
那麼咱們把O:4:"xctf":2:{s:4:"flag";s:3:"111";}傳給code再進行請求:百度
得出flag.序列化