感謝のデシリアライズおよびシリアライズ

このブログの記事は、シリアライズとデシリアライズするためのシンプルな基本的な学習の後に行われ、知識の基礎となる要素を理解してソートノートでは、主な内容は、次の2件の記事を参照してください。


参考リンク:
https://www.freebuf.com/articles/web/167721.html

https://www.cnblogs.com/youyoui/p/8610068.html

0x01のシリアライズ

発生値のPHPの配列は、格納または転送処理します。

PHPのシリアライズ機能は次のとおりです。

文字列 にserializeミックス $値// オブジェクトのための$値は、シリアライズまたは配列します

シリアライズ()関数は、文字列を返し、容易にオブジェクトの他の部分に移すことができる必要とされ、その構造およびタイプを変更しません。

 

例:

<?PHPの 
 $サイト = 配列( 'グーグル'、 'Runoob'、 'Facebookの' ); 
$ serialized_data = シリアル化$サイト)。 
エコー $ serialized_dataをPHP_EOL ; 
?>

出力は次のとおり
:. 3:{I:0; S:。6: "グーグル"; Iは1 :.; S:。6: "Runoob"; I:2; S :. 8: "フェイスブック";}

 

シリアル化形式:

文字列:S:サイズ:値;
整数:I:値;
ブール:B:値(保存1或0)
ヌル:N。
配列:サイズ:{キー定義、値定義(要素ごとに繰り返す)}
オブジェクト:O:strlenを(オブジェクト名):オブジェクト名:オブジェクトのサイズ:{S:strlenを(プロパティ名):プロパティ名:プロパティ定義。 (プロパティごとに繰り返します)}

シリアライズされたオブジェクト、クラスが頻繁に値を保持していない場合は、親クラス変数を保持します。

 

機能の一般的な魔法の順序:

__construct()オブジェクトを作成するために呼び出す
__destruct()は、オブジェクトが破棄されるときに呼び出される
__toString()オブジェクトを文字列として扱われる場合に使用して
シリアル化される前に実行されているオブジェクトに)(__sleep
シリアライゼーション直後に呼び出される__wakeupを

 

変数オブジェクトのシリアル化を選択します

マジックメソッドの主な用途:

公共の 配列 __sleep(無効)

* __sleepシリアル化されたオブジェクト()マジックメソッドは、典型的には、この方法の魔法をオーバーライド使用してクラスで行わ呼び出されたメソッドの優先順位が存在する場合
、この方法は、配列の値を返す*、アレイは、シリアル化するように選択されますオブジェクト変数は、
任意の変数名、NULLの列、およびエラーを返さない場合*
*このメソッドは、親クラスのプライベートメンバ変数名を返すことができない、それ以外の場合はエラーになり、代わりにSerializableインタフェースを使用することができます
*一般的に大きなオブジェクトを保存するために、クリーンアップ作業で使用します、冗長データを保存避けます

 

0x02のデシリアライズ

PHPのデシリアライズ機能を提供しながら、オブジェクトの順序は、文字列として保存されました:

混合 アンシリアライズ文字列 $ strの

*文字列がデシリアライズすることができず、誤ったエラーを返した場合
、文字列を逆シリアル化することができる場合*は、本明細書中シリアライゼーション・フォーマット・タイプであってもよい
*可変オブジェクトとして逆シリアル化すると、オブジェクトが再構成されています後、PHPは魔法の関数__wakeup()は、コールしようとした場合に検出し、

 

0x03のシリアライズとデシリアライズの使用

キャッシュは、このようなクッキー、セッションのキャッシュとして、一般的に使用されるデータをシリアル化し、デシリアライズ。そこでの変数の数で別の例として、クラスのプロジェクト、クラスは、それがシステム資源の浪費に呼び出され、次回の過程でインスタンス化された後、変数に変更が生じ、破壊されていない場合は、そうすることができます標的配列は、文字列として保存され、その後、直列化復元を呼び出すときに使用されることを待っています。

シリアライゼーションおよびデシリアライゼーション、すなわちJSONデータとして、Javaで比較的大きな使用しました。
PHPで使用される主な機能は以下の通り:
json_encode()
json_decodeのを()

すべてのすべてで、シリアライズとデシリアライズは、バイトストリーム、コンビニエンスストアやコールへのオブジェクトのシーケンスプロジェクトです。

 

この時点で、唯一の基本的な知識と理解のシリアライズとデシリアライズのために、CTF例デシリアライズの脆弱性のいくつかの研究が続くことに、そのように深い理解とデシリアライズを学びます。

おすすめ

転載: www.cnblogs.com/CubicZ/p/11348540.html