1. 程式人生 > >php代碼審計9審計反序列化漏洞

php代碼審計9審計反序列化漏洞

序列化 gin 註入 wake sql註入 sset 恢復 tin 序列化對象

序列化與反序列化:
序列化:把對象轉換為字節序列的過程稱為對象的序列化
反序列化:把字節序列恢復為對象的過程稱為對象的反序列化

漏洞成因:
反序列化對象中存在魔術方法,而且魔術方法中的代碼可以被控制,漏洞根據不同的代碼可以導致各種攻擊,如代碼註入,sql註入,目錄遍歷等等

序列化的不同結果
public:
private:
protect:

漏洞本質:unserialize函數的變量可控,php文件中存在可利用的類,類中有魔術方法

魔術方法:
_construc(),_destruct()
_call(),_callStatic()
_get(),_set()
_isset(),_unset()
_sleep(),_wakeup()
_toString()
_invoke()
_set_state()
_clone()
_debuginfo()

代碼:
<?php
error_reporting(0);
include "flag.php";
$KEY = "D0g3!!!";
$str = $_GET[‘str‘];
if (unserialize($str) === "$KEY")
{
echo "$flag";
}
show_source(__FILE__);

直接上傳s:7:"D0g3!!!"即可

php代碼審計9審計反序列化漏洞