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...