一、環境搭建
文件包含漏洞測試代碼 file.php
<?php $filename = $_GET['filename']; include($filename); ?>
session內容可控測試代碼 session.php
<?php session_start(); $ctfs=$_GET['ctfs']; $_SESSION["username"]=$ctfs; ?>
二、利用條件
1、session存儲位置可以獲取
可以通過phpinfo查看


也可以通過猜測,例如linux默認存儲在/var/lib/php/session目錄下
2、session可控
當session可控時,就可以傳入惡意代碼
3、知道session文件名
session文件名的構造是sess_ + sessionid , sessionid在cookie中可以查看

三、漏洞利用

這里可以傳入可控的session,將<?php phpinfo(); ?>寫入session文件
通過phpinfo、或者猜測,我們知道了session存儲位置為D:\phpStudy\tmp\tmp
現在來看session文件名,所以文件名為sess_p3dgmgo7abevkeoe5dpo3r1qp1

在文件包含漏洞的頁面,提交getshell

整體思路:通過可控的session值,傳入惡意代碼,找到session文件地址、文件名,通過文件包含漏洞包含session文件,達到getshell的目的
參考:
