CTF-攻防世界-unserialize3(PHP序列化)


題目

   

hmm....代碼硬傷暴擊..>_<..,趕緊去補了一下php的序列化知識。。。

 

解題過程

題目已經說明了這題是php的反序列化。代碼里面是一個類,類名xctf,類里面就一個string型變量,值為"111"。那么這題就是php的類的序列化。

__wakeup方法是php的魔術方法,當調用反序列化函數unserialize()時,會默認檢查類中是否存在__wakeup方法,如果存在,會先調用。這個方法的作用一般是用來在反序列化時做一些初始化操作。舉個栗子:假設咱們要反序列化一個DB類,里面存儲了DB的相關信息,咱們反序列化之后只是把這個類拿過來了,但數據庫連接這個操作還是要自己來做,這時就可以把數據庫連接的代碼寫到__wakeup方法里面。 

?code= 應該是提示我們用code來傳參數,嘗試一下隨便寫一個:http://111.198.29.45:55539/?code=111,返回:

再試:http://111.198.29.45:55539/?code="111",返回

這里應該要傳入的是xctf類的序列化后的字符串:http://111.198.29.45:55539/?code=O:4:%22xctf%22:2:{s:4:%22flag%22;s:3:%22111%22;},拿到flag:

知識點總結

1. 魔術方法:PHP 將所有以 __(兩個下划線)開頭的類方法保留為魔術方法。個人理解就是php提供一些語言自帶的方法。

2.序列化結果解析:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM