<?php
function filter_short($img)
function filter_long($img)
extract($_post);
if(!$_get['cmd'])else
$serialize_by_short = filter_short(serialize($_session));
$userinfo = unserialize($serialize_by_short);
//$serialize_by_long = filter_long(serialize($_session));
//$userinfo = unserialize($serialize_by_long);
@eval(base64_decode($userinfo['cmd']));
// $target_payload = 'system("cat /flag");';
我們的目標是要得到這樣的乙個array,才會實現執行。其序列化資料為:
array(1)
//a:1:
而題目中的cmd我們是不可控的。但我們可以利用變數覆蓋,來控制$_session的其它資料。
也是是題幹中的filter_short函式。將php/flag等關鍵字替換為空。這樣就會破壞掉反序列化的結構。
php反序列化總結
反序列化漏洞黑盒很難發現,即使發現了也好難利用。不過危害很大。序列化使用函式serialize 來返回乙個包含位元組流的字串來表示。unserialize 函式能夠重新把字串變回php原來的值。序列化乙個物件將會儲存物件的所有變數,但是不會儲存物件的方法,只會儲存類的名字。序列化結果 string ...
PHP反序列化
php反序列化漏洞 一 序列化定義 序列化 serialization 在電腦科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式 例如存成檔案,存於緩衝,或經由網路中傳送 以留待後續在相同或另一台計算機環境中,能恢復原先狀態的過程。概念很容易理解,其實就是將資料轉化成一種可逆的資料結構,自然...
php反序列化
php序列化 將物件或變數轉換成字串。php反序列化 是將字串轉換成原來的變數。serialize serialize 函式用於序列化物件或陣列,並返回乙個字串。serialize 函式序列化物件後,可以很方便的將它傳遞給其他需要它的地方,且其型別和結構不會改變。sites array google...