php序列化與反序列化

2022-07-30 12:42:14 字數 1444 閱讀 6596

jarvisoj上的一道題

是關於php序列化以及反序列化引起的問題,我看

wp大神的wp  

題目給直接給出了源**

這句話是關鍵,漏洞產生在php_serialize和php解析方式上。

如果我們通過php_serialize的方式構造序列化語句,然後通過php的方式解析序列化語句,就會出現問題。原因是在使用php_serialize構造過程中,可以在字串變數中儲存 | 符號,但是如果按照php的方式解析的話,會把 | 之前的語句當做陣列的鍵,之後的語句當做值,這時我們就可以按照這個特性來構造執行物件的命令。(這裡不是很明白,實驗後大概就是可以利用這個來執行一些許可權允許的命令,以後再碰到這樣的題目就應該可以有更深的理解了)

這裡沒有某個值是用來接受我們傳入的資料,並儲存到$_session中的。

通過檢視phpinfo頁面可以看到session.upload_progress.enabled是被開啟了的

,也就是允許上傳檔案。

當乙個上傳在處理中,同時post乙個與

ini中設定的

session.upload_progress.name

同名變數時,當

php檢測到這種

post

請求時,它會在

$_session

中新增一組資料。所以可以通過

session upload progress

來設定session

這裡就實現了上面的文字描述的內容

再寫個php,弄出序列化後的內容,將

mdzz

賦值為想要序列化的內容

這是序列化後的內容。

開啟那個我們做的html上傳任一檔案,用burp截斷,修改filename,這裡需要在」前加上\防止轉義,並且在最前面加上|,這是session的格式。

不太會用這個,影象就是不太清晰

這時我們檢視phpinfo介面,可以發現_session["script_filename"]中標註了index.php所在的目錄/opt/lampp/htdocs/,而我們想要的檔案也在裡面

。接下來就是去獲取那個可疑檔案的內容

這時flag就出來了。

php序列化與反序列化

php的序列化 反序列化對與一些大檔案的壓縮操作,讀寫操作十分有用。乙個簡單的序列化案例 同時用到了序列化與反序列化函式,二者在被呼叫時會分別自己呼叫對應的函式,sleep 以及 wakeup.sleep和 wakeup練習題 故事 乙個果農生產了很多水果種類,於是需要把乙個買家指定的種類寄給他,生...

php 序列化與反序列化

序列化 反序列化序列化 例一class user number 66 str jerry bool true null null arr array a 1,b 2 user new user tom true var dump serialize number var dump serialize...

PHP序列化與反序列化

物件序列化 class site function geturl function settitle par function gettitle s new site var dump serialize s string 41 o 4 site 2 s url s title cdr s blog...