PHP反序列化和魔術方法

概念

概念和開發一樣
在這裏插入圖片描述

相關函數

在這裏插入圖片描述
在這裏插入圖片描述

這兩個函數是特徵之一;
序列化的含義:
在這裏插入圖片描述
o 是對象(數組反序列化的話 是 a)
4 是對象長度, 之後名字, 2 是變量個數,
s代表字符串, 3 代表個數,後面 也是 一樣的。
在這裏插入圖片描述
反序列化過程中 ,可控點只有變量,函數 不可控。
侷限性在於 其中的 function 函數。函數沒有危害性的話 漏洞也沒有,或者xss之類的。

配合魔術方法可以造成危害:
在這裏插入圖片描述
序列化的時候調用默認的方法:
在這裏插入圖片描述
關鍵在於下面這幾個函數:
在這裏插入圖片描述

簡單題目:

bugku的
題目:
在這裏插入圖片描述
hint。PHP 是這個文件 ,存在文件包含漏洞:在這裏插入圖片描述
所以包含hint進去:用PHP僞協議讀取
在這裏插入圖片描述
解碼:

所以自己序列化一下對象:獲取 序列化之後的字符串。

在這裏插入圖片描述

題目中執行echo 之前 會執行tostring函數,

在這裏插入圖片描述

在這裏插入圖片描述
所以 通過 函數去 讀取 flag。PHP
payload
在這裏插入圖片描述
在這裏插入圖片描述
用input協議
php://input 是個可以訪問請求的原始數據的只讀流。

php://filter 是一種元封裝器, 設計用於數據流打開時的篩選過濾應用。類似 readfile()、 file() 和 file_get_contents(), 在數據流內容讀取之前沒有機會應用其他過濾器。
關於:
php://input,php://filter
我的理解是:兩個協議都可以讀文件而不執行,不過fitler 功能更多,可以編碼和解碼

注意點:

在這裏插入圖片描述

實戰一個題目:(10:41秒 ~ )
在這裏插入圖片描述

在這裏插入圖片描述

如果在o:後面加上 +
在這裏插入圖片描述

因爲+ 在url編碼中 有其他作用,所以要把 + URL編碼一下。
上圖
能加+是因爲 4 和+4 是一樣的。
+4 可以繞過 正則。

PHP反序列化 bug

在這裏插入圖片描述
在這裏插入圖片描述
對應題目:
思路 是 直接修改o 後面代表 屬性個數的數字即可。
注意 有時候要 base64 之後再傳。

PHP session 反序列化

PHP bug:
在這裏插入圖片描述
eg:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

bug

在這裏插入圖片描述

在這裏插入圖片描述

session 安全問題:
在這裏插入圖片描述
實戰:

安恆 題目:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

所以嘗試去如下構造:
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

phar反序列化:

在這裏插入圖片描述

看起來 無害的函數:
在這裏插入圖片描述
在這裏插入圖片描述
這些函數 都可以~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章