Pikachu靶场不安全的文件下载(代码分析)

devtools/2025/2/11 8:08:32/

题目

点击球员名字即可下载头像图片,点击球员名字发现是通过/vul/unsafedownload/execdownload.php?filename=kb.png接口传参filename来实现下载文件的

查看execdownload.php代码

<?php$PIKA_ROOT_DIR =  "../../";include_once $PIKA_ROOT_DIR."inc/function.php";header("Content-type:text/html;charset=utf-8");
// $file_name="cookie.jpg";
$file_path="download/{$_GET['filename']}";
//用以解决中文不能显示出来的问题
$file_path=iconv("utf-8","gb2312",$file_path);//首先要判断给定的文件存在与否
if(!file_exists($file_path)){skip("你要下载的文件不存在,请重新下载", 'unsafe_down.php');return ;
}
$fp=fopen($file_path,"rb");
$file_size=filesize($file_path);
//下载文件需要用到的头
ob_clean();//输出前一定要clean一下,否则图片打不开
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".basename($file_path));
$buffer=1024;
$file_count=0;
//向浏览器返回数据//循环读取文件流,然后返回到浏览器feof确认是否到EOF
while(!feof($fp) && $file_count<$file_size){$file_con=fread($fp,$buffer);$file_count+=$buffer;echo $file_con;
}
fclose($fp);
?>

代码中只判断了文件是否存在,存在就下载

/execdownload.php?filename=../../../../etc/passwd

下载/etc/passwd文件


http://www.ppmy.cn/devtools/157873.html

相关文章

github下载失败网页打开失败 若你已经知道github地址如何cmd下载

直接打开命令行&#xff1a; winr cmd 输入&#xff1a;git clone 地址 eg&#xff1a;git clone https://github.com/akospasztor/stm32f103-dfu-bootloader

裸机服务器是指什么?

在我们的日常生活中&#xff0c;除了有物理服务器、云服务器和虚拟服务器等多种服务器类型&#xff0c;还有一种裸机服务器&#xff0c;下面小编就来为大家介绍一下什么是裸机服务器&#xff01; 裸机服务器是一种不带操作系统和其他软件的服务器&#xff0c;裸机服务器可以为用…

关于FANUC机器人示教器型号的说明

关于FANUC机器人示教器型号的说明 如下图所示&#xff0c; 示教器的型号为&#xff1a;A05B-2255-C102#ESW&#xff0c; 如果需要对示教器进行更换或维修测试&#xff0c;只需保证前面8位的型号保持一致即可&#xff0c; 例如下图中的型号&#xff0c; 只需保证A05B-2255-x…

CNN-day5-经典神经网络LeNets5

经典神经网络-LeNets5 1998年Yann LeCun等提出的第一个用于手写数字识别问题并产生实际商业&#xff08;邮政行业&#xff09;价值的卷积神经网络 参考&#xff1a;论文笔记&#xff1a;Gradient-Based Learning Applied to Document Recognition-CSDN博客 1 网络模型结构 …

Django框架丨从零开始的Django入门学习

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架&#xff0c;Django是一个高度模块化的框架&#xff0c;使用 Django&#xff0c;只要很少的代码&#xff0c;Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容&#xff0c;并进一步开发出全功能…

本地大模型编程实战(11)与外部工具交互(2)

文章目录 准备定义工具方法创建提示词生成工具方法实参以 json 格式返回实参自定义 JsonOutputParser返回 json 调用工具方法定义通用方法用 链 返回结果返回结果中包含工具输入 总结代码 在使用 LLM(大语言模型) 时&#xff0c;经常需要调用一些自定义的工具方法完成特定的任务…

【蓝耕元生代智算云平台】一键部署 DeepSeek人工智能模型

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…

Http和Socks的区别?

HTTP 和 SOCKS 的区别 HTTP 和 SOCKS 都是用于网络通信的协议&#xff0c;但它们在工作原理、应用场景和实现方式上有显著的区别。以下是详细的对比和说明。 一、HTTP 协议 1. 定义 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是用于传输超文本数据的应用层协…