欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Phar反序列化超詳細(xì)介紹

 更新時間:2022年11月11日 11:30:30   作者:隱形卟  
這篇文章主要為大家介紹了PHP開發(fā)技巧之PHAR反序列化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Phar是什么

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

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

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

如何創(chuàng)建一個Phar 文件

創(chuàng)建之前了解Phar文件的組成結(jié)構(gòu):

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

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

最常見的創(chuàng)建Phar 文件php代碼

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

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

如何反序列化利用

我們在構(gòu)造特殊的meta-data數(shù)據(jù)后,在php中如果使用一些文件系統(tǒng)函數(shù)去引用調(diào)用phar文件就會觸發(fā)反序列化,下面是知道創(chuàng)宇測試確認(rèn)受影響的函數(shù)。

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

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

輸出結(jié)果,meta-data中的數(shù)據(jù)被反序列化觸發(fā)了__wakeup魔術(shù)方法,打印了test

在學(xué)習(xí)過程中,發(fā)現(xiàn)存在偽協(xié)議phar://關(guān)鍵詞不能出現(xiàn)在開頭的情況,師傅們的繞過方法是,使用下面的方式也能達(dá)到一樣的效果。

如果在上傳對phar文件頭進(jìn)行校驗的檢測,可以根據(jù)相應(yīng)的文件修改添加文件頭,如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

到此這篇關(guān)于Phar反序列化超詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Phar反序列化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • PHP實現(xiàn)的觀察者模式實例

    PHP實現(xiàn)的觀察者模式實例

    這篇文章主要介紹了PHP實現(xiàn)的觀察者模式,結(jié)合具體實例形式分析了php觀察者模式的定義與使用方法,需要的朋友可以參考下
    2017-06-06
  • 再談PHP未來之路

    再談PHP未來之路

    這篇文章主要介紹了再談PHP未來之路,對PHP感興趣的同學(xué),可以看一下
    2021-04-04
  • PHP中如何使用Redis接管文件存儲Session詳解

    PHP中如何使用Redis接管文件存儲Session詳解

    這篇文章主要給大家介紹了關(guān)于在PHP中如何使用Redis接管文件存儲Session的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • php 解壓rar文件及zip文件的方法

    php 解壓rar文件及zip文件的方法

    rar文件解壓php沒有直接支持的,不過可以通過下載將非線程安全的dll然后扔到php的ext目錄下,之后按照下面的步驟操作即可
    2014-05-05
  • php中一個有意思的日期邏輯處理

    php中一個有意思的日期邏輯處理

    今天處理了一個很小的問題。需求是這樣的,從周一到周日只能看到上周一到上周日的數(shù)據(jù)。這里直接從數(shù)據(jù)庫里根據(jù) date 字段查詢 范圍即可
    2012-03-03
  • 與文件上傳有關(guān)的php配置參數(shù)總結(jié)

    與文件上傳有關(guān)的php配置參數(shù)總結(jié)

    搞個了圖片上傳,死活不好使,后來發(fā)現(xiàn)是php參數(shù)配置的問題,下面總結(jié)下與文件上傳有關(guān)的php參數(shù),有類似情況的朋友可以參考下哈
    2013-06-06
  • php將數(shù)據(jù)庫中所有內(nèi)容生成靜態(tài)html文檔的代碼

    php將數(shù)據(jù)庫中所有內(nèi)容生成靜態(tài)html文檔的代碼

    比較簡單了,而且我的代碼優(yōu)化也很是問題 比較繁瑣。下面就直接上代碼了
    2010-04-04
  • php中訪問修飾符的知識點(diǎn)總結(jié)

    php中訪問修飾符的知識點(diǎn)總結(jié)

    在本篇文章里小編給大家分享了關(guān)于php中訪問修飾符的知識點(diǎn)總結(jié),興趣的朋友們可以學(xué)習(xí)參考下。
    2019-01-01
  • Centos7安裝swoole擴(kuò)展操作示例

    Centos7安裝swoole擴(kuò)展操作示例

    這篇文章主要介紹了Centos7安裝swoole擴(kuò)展操作,詳細(xì)分析了Centos7安裝swoole擴(kuò)展的具體步驟、相關(guān)操作命令與使用注意事項,需要的朋友可以參考下
    2020-03-03
  • php實現(xiàn)計數(shù)器方法小結(jié)

    php實現(xiàn)計數(shù)器方法小結(jié)

    這篇文章主要介紹了php實現(xiàn)計數(shù)器方法,總結(jié)了三款非常實用的計數(shù)器實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01

最新評論