iwebsec-文件包含 03 session本地文件包含

发布时间 2023-08-20 10:43:20作者: 别打扰我摸鱼

01、题目分析

程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,

直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。

在包含文件的过程中,如果文件能进行控制,则存储文件包含漏洞

02、文件包含

在这一题中,采用了session验证,根据提示,我们就可以发现,这里有一个写入功能,我们写入的语句会被存储到服务器上当作session

image

因此我们可以尝试将php语句传入到session文件中

http://www.bdrwmy.cn:8001/fi/03.php?iwebsec=<?php phpinfo();?>

image

这样php代码就被存储到了session中,接下来我们要做的就是访问session文件,但是本题中并没有文件包含,无法访问session怎么办,那么只能回到第一题去访问session了,但是在这之前,先f12获取phpsessid,注意,每个人的phpsessid是不相同的!

251md2g1dokp46usgbk711rpm4	

image

在linux服务器中,session的默认目录一般为/var/lib/php/session/

那么我们就去第一题访问session

http://www.bdrwmy.cn:8001/fi/01.php?filename=/var/lib/php/session/sess_251md2g1dokp46usgbk711rpm4

image

可以发现执行了

虽然这一题和第一题都是在01.php上执行的phpinfo()代码,但是需要注意的是,第一关的phpinfo()是没得选,他本机文件中只有这个包含phpinfo()的代码,但是这一关中,我们实现了构造文件内容,不仅仅可以把文件内容写成phpinfo(),还可以直接放进去木马去执行

03、源码分析

<?php
	if(isset($_GET['iwebsec'])){ // 检查是否设置了 'iwebsec' 参数
		session_start(); // 启动会话,以便使用会话变量
		$iwebsec=$_GET['iwebsec']; // 获取 'iwebsec' 参数的值,并赋给 $iwebsec 变量
		$_SESSION["username"]=$iwebsec; // 将 $iwebsec 变量的值存储到名为 "username" 的会话变量中
		echo 'SESSION["username"]的内容是'. $_SESSION['username']; // 输出会话变量 "username" 的值
	}else{
		exit(); // 如果未设置 'iwebsec' 参数,则退出脚本执行
	}
?>