PHPは、シリアライズとデシリアライズさ

0x00の基礎知識

超詳細なスピーク:https://www.cnblogs.com/youyoui/p/8610068.html

キーの抜粋:

図1に示すように、直列化されたオブジェクトは、格納された値は一定ではありません。親クラス変数のために保持されます。

呼び出し2、serialize()クラスの存在オブジェクトの機能配列、マジック機能チェックの方法__sleep()もしそうなら、この方法は、第1の演算の実行順序の前に呼び出されます。あなたは一連の動作をカスタマイズするために、このメソッドをオーバーライドすることができます。

図3に示すように、それらがデシリアライズされた場合、変数は、オブジェクトが、正常にオブジェクトを再構成した後、PHPは自動的に呼び出ししようとしている__wakeup()メンバ関数を(存在する場合)

練習は0x01

xctf_unsealize3

あなたが見ることができるURLを開きます

 

非シリアル化された文字列の構成に直接ことができる、そのコードが実行されるシリアライゼーションに書き込まれ、また、手動で設定することができ、手動で設定I:O:4:「xctf」 :1:{S:4:「フラグ」; S :6: "111";} 、Oは、 オブジェクトを表し、Sは、文字列を表します。

見百度は、不動産の数を示す文字列値をシリアル化を回避する方法は、オブジェクト属性の数よりも大きいように非直列化されたオブジェクト、およびそこ_wakeup()メンバ関数は、自動的に呼び出され、上記から、場合に実行をスキップするとき__wakeup

構成することができるように:O:4: "xctf":2:{S:4: "フラグ"; S:6: "111";}

0x03の概要

PHP言語は本当に不思議な言語であります

おすすめ

転載: www.cnblogs.com/dx-yll/p/12028346.html