日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52000
  • 待審:37
  • 小程序:12
  • 文章:1037587
  • 會員:756

目錄
    Phar是什么
    如何創建一個Phar 文件
    如何反序列化利用

    phar反序列化是一種開發者常用的技術,可以實現將數據序列化和反序列化的操作,以及對數據的加密和解密操作。在一個php應用程序中,phar模塊可以用來創建和管理phar文件,這種文件可以包含php代碼和相關的資源文件。phar反序列化的使用可以幫助開發者更好地管理代碼和資源,提高應用程序的安全性和靈活性。本文將詳細介紹phar反序列化的相關原理和使用技巧,幫助讀者了解該技術的底層原理,提升應用程序的安全性和可擴展性。

    Phar是什么

    在百度中得到介紹是這樣的:

    在軟件中,PHAR(PHP歸檔)文件是一種打包格式,通過將許多php代碼文件和其他資源(例如圖像,樣式表等)捆綁到一個歸檔文件中來實現應用程序和庫的分發。phar文件本質上是一種壓縮文件,會以序列化的形式存儲用戶自定義的meta-data。當受影響的文件操作函數調用phar文件時,會自動反序列化meta-data內的內容。

    理解為php特有的一種打包方式,需要使用php代碼進行大包,且無法通過普通的工具進行解壓解包。

    phar反序列化是一種開發者常用的技術,可以實現將數據序列化和反序列化的操作,以及對數據的加密和解密操作。在一個php應用程序中,phar模塊可以用來創建和管理phar文件,這種文件可以包含php代碼和相關的資源文件。phar反序列化的使用可以幫助開發者更好地管理代碼和資源,提高應用程序的安全性和靈活性。本文將詳細介紹phar反序列化的相關原理和使用技巧,幫助讀者了解該技術的底層原理,提升應用程序的安全性和可擴展性。

    如何創建一個Phar 文件

    創建之前了解Phar文件的組成結構:

    stub:phar文件的標志,必須以 , 結尾,否則無法識別。xxx可以為自定義內容。
    stub這一部分,在了解時發現其實這樣寫 也是可以正常解析的
    manifest:phar文件本質上是一種壓縮文件,其中每個被壓縮文件的權限、屬性等信息都放在這部分。這部分還會以序列化的形式存儲用戶自定義的meta-data,這是漏洞利用最核心的地方。
    content:被壓縮文件的內容
    signature (可空):簽名,放在末尾。

    開始之前需要修改配置php.ini配置文件,修改phar.readonly 配置為Off,之后重啟生效

    最常見的創建Phar 文件php代碼

    <?php
    class Test{
     public$test="test";
    }
    $p = new Test();
    $phar = new Phar("test.phar");//要創建的Phar文件名,必須是phar后綴
    $phar->startBuffering();//寫入之前開始緩沖Phar寫入操作
    $phar->setStub("<?php __HALT_COMPILER();?>");//設置stub
    $phar->setMetadata($p);//將自定義的meta-data存入manifest,這一部分就是把序列化的對象加入到meta-data
    $phar->addFromString("test.txt", "test");//添加要壓縮的文件(這一步必須要有,如果不設置就無法生成phar文件,文件隨便)
    $phar->stopBuffering();//簽名自動計算
    ?>

    登錄后復制

    執行代碼后會在當前代碼目錄下生成test.phar文件,以文本格式查看test.phar文件,在內容中可以看到Test類被序列化寫入了。O:4:“Test”:1:{s:4:“test”;N;}

    phar反序列化是一種開發者常用的技術,可以實現將數據序列化和反序列化的操作,以及對數據的加密和解密操作。在一個php應用程序中,phar模塊可以用來創建和管理phar文件,這種文件可以包含php代碼和相關的資源文件。phar反序列化的使用可以幫助開發者更好地管理代碼和資源,提高應用程序的安全性和靈活性。本文將詳細介紹phar反序列化的相關原理和使用技巧,幫助讀者了解該技術的底層原理,提升應用程序的安全性和可擴展性。

    如何反序列化利用

    我們在構造特殊的meta-data數據后,在php中如果使用一些文件系統函數去引用調用phar文件就會觸發反序列化,下面是知道創宇測試確認受影響的函數。

    這里使用is_dir函數,這是一個判斷傳入的是否是一個目錄的函數,創建與之前設置meta-data 的一個Test類,__wakeup魔術方法與__destruct 魔術方法在反序列化對象時都會觸發,__destruct 魔術方法是在銷毀時觸發。

    <?php
    class Test{
    function __wakeup()
    {
    echo($this ->test) ;
    }
    }
    is_dir('phar://test.phar');//以phar偽協議的格式傳入
    ?>
    

    登錄后復制

    輸出結果,meta-data中的數據被反序列化觸發了__wakeup魔術方法,打印了test

    學習過程中,發現存在偽協議phar://關鍵詞不能出現在開頭的情況,師傅們的繞過方法是,使用下面的方式也能達到一樣的效果。

    如果在上傳對phar文件頭進行校驗的檢測,可以根據相應的文件修改添加文件頭,如gif(GIF89a)

    compress.bzip://phar:///test.phar/test.txt
    compress.bzip2://phar:///test.phar/test.txt
    compress.zlib://phar:///home/sx/test.phar/test.txt
    php://filter/resource=phar:///test.phar/test.txt

分享到:
標簽:Phar 序列化 詳細介紹
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52000

    網站

  • 12

    小程序

  • 1037587

    文章

  • 756

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定