phar 反序列化本地測試

2021-08-29 20:33:53 字數 855 閱讀 3548

看了上邊的文章,然後根據他的**來復現的。

眾多檔案操作函式能反序列化在於使用了phar_parse_url,之後有呼叫到phar_var_unserialize。

生成 phar**:  test.txt隨便寫就行,沒必要真實存在

<?php

class testobject

$phar = new phar('phar.phar');

$phar -> startbuffering();

$phar -> setstub('gif89a'.'<?php __halt_compiler();?>'); //設定stub,增加gif檔案頭

$phar ->addfromstring('test.txt','test'); //新增要壓縮的檔案

$object = new testobject();

$object -> data = 'hu3sky';

$phar -> setmetadata($object); //將自定義meta-data存入manifest

$phar -> stopbuffering();

?>

反序列化 **:

<?php

class testobject

}include('phar:');

?>

測試發現,phar在生成之後,即可隨便改字尾了。生成的時候必須是.phar

還有乙個就是 include 換成 is_file 的情況下,compress.zlib://phar: 這樣沒有被反序列化。

別的函式沒有過多的測試。:)

序列化反序列化

只要用到網路開發啊,就一定會用到序列化反序列化。1,自定義結構體 struct test int len int type char data 10 test data test buffer.缺點 明文,只支援基本型別,不支援變長結構 2,在1的基礎上,自定義乙個緩衝類,存放乙個訊息。把訊息寫入緩...

序列化反序列化

using system using system.collections.generic using system.io using system.linq using system.text using system.threading.tasks namespace 序列化反序列化 syste...

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...