php反序列漏洞 例項 PHP反序列化漏洞

2021-10-22 21:52:55 字數 1024 閱讀 7037

雖然胳膊廢了,也不能停止我更新的腳步。。。寫個簡單點的吧

0x00 何為類和物件

說到序列化和反序列化就不得不提到兩個詞:類和物件

那麼什麼是類,什麼是物件

教科書式的答案是類是物件的抽象,物件是類的例項

那啥叫個抽象,啥叫個例項呢

簡單的說,類就是物件的乙個標準模板,而物件就是按照模板做出來的實物

一臉懵逼

舉個栗子

人,是乙個類

所有的人都有乙個腦袋兩個胳膊兩個腿

這個就是關於所有人的乙個標準模板

而物件呢,物件跑了...nnp

假設乙個真實存在的物件小芳,村里有個姑娘叫小芳,她的腦袋倍兒鋥亮

這個就是乙個具體的人了,小芳就是按照人的模板實際出來的乙個實物

小芳表示不想見你

**裡具體是這樣實現的

class beautifulgirls'; // 序列化後的字串

$reallytreebody = unserialize($zhi); // 把字串浸泡恢復一下

echo $reallytreebody->name; // 成為物件了,把物件的name屬性輸出一下

執行後,就會輸出物件的name

image.png

0x02 具體漏洞演示

image.png

如上圖,這個頁面會將引數f進行反序列,然後在析構函式裡面會把物件的test引數原始碼輸出出來

插一句析構函式(__destruct),這個函式是在物件被銷毀的時候呼叫的函式,當頁面執行完時,會**記憶體,將物件消毀,所以頁面結束時就能觸發

同時還有其他的一些函式自己去搜一搜

當我們想要它顯示指定的原始碼時,就需要構造乙個物件,test屬性內容就是檔名

那我們就可以在本地先寫乙個指定test屬性內容的物件,然後去序列化一下,再將字串反序列化就能得到我們指定的乙個物件(其實就是脫褲子放屁,脫水一下再去浸泡一下)

class example

再將這個字串傳給f引數,就可以顯示flag.php的內容

image.png

PHP反序列化漏洞

序列化簡單利用 serialize 序列化 使用函式serialize 可將例項序列化為字串 unserialize 反序列化 使用函式unserialize 可將序列化的字串還原 示例 class example unserialize get code 漏洞利用 構造漏洞利用的 儲存為test....

PHP反序列化漏洞

前幾天安恆月賽兩道web題中有一道題是關於php反序列化的,然後剛好前幾天剛好看過這個知識點,於是乎這次比賽才沒有爆零,總算是寫出來了一道題 doge 所有php裡面的值都可以使用函式serialize 來返回乙個包含位元組流的字串來表示。unserialize 函式能夠重新把字串變回php原來的值...

php反序列化漏洞

序列化函式 serialize,反序列化函式 unserialize,例 class test test new test var dump serialize test 輸出如下 string 84 o 4 test 3 其中 o 代表資料型別是物件object,4 代表該物件名有4個字元,tes...