文件上传前台控制检测程序

文件上传漏洞及绕过检测的方式 文章目录一、什么是文件上传漏洞?二、目标会对文件上传做哪些防护?(一)客户端检测(二)服务端检测(三)白名单和黑名单的区别三、绕过后端黑名单检测(一)换一个后缀名绕过黑名单检测(二)用.htaccess文件巧妙绕过黑名单(三)用大小写绕过后缀名检测(四)文件后缀加空格或点绕过后缀名检测(五)构造文件后缀绕过后缀名检测(六)双写绕过后缀名检测(七)Windows文件流绕过后缀名检测四、绕过白名单检测(一)%00截断和00截断(二)绕过Content-Type检测(三)用图片木马绕过白名单检测(四)用gif文件 阅读详情

例子1

<title>文件上传前台控制检测程序 v0.5</title>
<body>
<script language=javascript>
/*-----------------------------------------
       文件上传前台控制检测程序 v0.5

  检测上传文件类型

 检测图片文件格式是否正确
 检测图片文件大小
 检测图片文件宽度
 检测图片文件高度
  ------------------------------------------*/

var ImgObj=new Image();   //建立一个图像对象
var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg//全局变量 图片相关属性

//以下为限制变量
var AllowExt=".jpg|.gif|.doc|.txt|" //允许上传的文件类型 ŀ为无限制 每个扩展名后边要加一个"|" 小写字母表示
//var AllowExt=0
var AllowImgFileSize=70;  //允许上传图片文件的大小 0为无限制  单位:KB
var AllowImgWidth=500;   //允许上传的图片的宽度 ŀ为无限制 单位:px(像素)
var AllowImgHeight=500;   //允许上传的图片的高度 ŀ为无限制 单位:px(像素)

function CheckProperty(obj)  //检测图像属性
{
  FileObj=obj;
  if(ErrMsg!="")   //检测是否为正确的图像文件 返回出错信息并重置
  {
    FileObj.outerHTML=FileObj.outerHTML;
    alert(ErrMsg);
    return false;   //返回
  }

  if(ImgObj.readyState!="complete") //如果图像是未加载完成进行循环检测
  {
    setTimeout("CheckProperty(FileObj)",500);
    return false;
  }

  ImgFileSize=Math.round(ImgObj.fileSize/1024);//取得图片文件的大小
  ImgWidth=ImgObj.width   //取得图片的宽度
  ImgHeight=ImgObj.height;  //取得图片的高度

  if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
    ErrMsg=ErrMsg+"/n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px";

  if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
    ErrMsg=ErrMsg+"/n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px";

  if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
    ErrMsg=ErrMsg+"/n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB";

  if(ErrMsg!="")   //返回出错信息并重置
  {
    FileObj.outerHTML=FileObj.outerHTML;
    alert(ErrMsg);
  }
}

ImgObj.onerror=function(){ErrMsg='/n图片格式不正确或者图片已损坏!'}

function CheckExt(obj)
{
  ErrMsg=""
  FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
  if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) //判断文件类型是否允许上传
  {
    ErrMsg="该文件类型不允许上传。请上传 "+AllowExt+" 类型的文件,当前文件类型为"+FileExt;
    obj.outerHTML=obj.outerHTML;
    alert(ErrMsg);
    return false;
  }
  if(AllImgExt.indexOf(FileExt+"|")!=-1)  //如果图片文件,则进行图片信息处理
  {
    ImgObj.src=obj.value;
    CheckProperty(obj);
    return false;
  }
}

</script>
<form enctype="multipart/form-data">
  <input type="file" name="file1" onchange="CheckExt(this)">
</form>
</body>

 

例子2

<title>文件上传前台控制检测程序 v0.6</title>
<style>
body,td{font-size:12px;}
</style>
<script language=javascript>

/*----------------------------------------
       文件上传前台控制检测程序 v0.6

  远程图片检测功能
  检测上传文件类型

 检测图片文件格式是否正确
 检测图片文件大小
 检测图片文件宽度
 检测图片文件高度
  图片预览
 
  For 51js.com Author:333 Date:2005/08/26
     UpDate:2005/09/03
 -----------------------------------------*/

var ImgObj=new Image();   //建立一个图像对象

var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 图片相关属性

//以下为限制变量
var AllowExt=".jpg|.gif|.doc|.txt|" //允许上传的文件类型 ŀ为无限制 每个扩展名后边要加一个"|" 小写字母表示
//var AllowExt=0
var AllowImgFileSize=70;  //允许上传图片文件的大小 0为无限制  单位:KB
var AllowImgWidth=500;   //允许上传的图片的宽度 ŀ为无限制 单位:px(像素)
var AllowImgHeight=500;   //允许上传的图片的高度 ŀ为无限制 单位:px(像素)

HasChecked=false;

function CheckProperty(obj)  //检测图像属性
{
  FileObj=obj;
  if(ErrMsg!="")   //检测是否为正确的图像文件 返回出错信息并重置
  {
    ShowMsg(ErrMsg,false);
    return false;   //返回
  }

  if(ImgObj.readyState!="complete") //如果图像是未加载完成进行循环检测
  {
    setTimeout("CheckProperty(FileObj)",500);
    return false;
  }

  ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
  ImgWidth=ImgObj.width   //取得图片的宽度
  ImgHeight=ImgObj.height;  //取得图片的高度
  FileMsg="/n图片大小:"+ImgWidth+"*"+ImgHeight+"px";
  FileMsg=FileMsg+"/n图片文件大小:"+ImgFileSize+"Kb";
  FileMsg=FileMsg+"/n图片文件扩展名:"+FileExt;

  if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
    ErrMsg=ErrMsg+"/n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px";

  if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
    ErrMsg=ErrMsg+"/n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px";

  if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
    ErrMsg=ErrMsg+"/n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB";

  if(ErrMsg!="")
    ShowMsg(ErrMsg,false);
  else
    ShowMsg(FileMsg,true);
}

ImgObj.onerror=function(){ErrMsg='/n图片格式不正确或者图片已损坏!'}

function ShowMsg(msg,tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容
{
  msg=msg.replace("/n","<li>");
  msg=msg.replace(//n/gi,"<li>");
  if(!tf)
  {
    document.all.UploadButton.disabled=true;
    FileObj.outerHTML=FileObj.outerHTML;
    MsgList.innerHTML=msg;
    HasChecked=false;
  }
  else
  {
    document.all.UploadButton.disabled=false;
    if(IsImg)
      PreviewImg.innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>"
    else
      PreviewImg.innerHTML="非图片文件";
    MsgList.innerHTML=msg;
    HasChecked=true;
  }
}

function CheckExt(obj)
{
  ErrMsg="";
  FileMsg="";
  FileObj=obj;
  IsImg=false;
  HasChecked=false;
  PreviewImg.innerHTML="预览区";
  if(obj.value=="")return false;
  MsgList.innerHTML="文件信息处理中...";
  document.all.UploadButton.disabled=true;
  FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
  if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) //判断文件类型是否允许上传
  {
    ErrMsg="/n该文件类型不允许上传。请上传 "+AllowExt+" 类型的文件,当前文件类型为"+FileExt;
    ShowMsg(ErrMsg,false);
    return false;
  }

  if(AllImgExt.indexOf(FileExt+"|")!=-1)  //如果图片文件,则进行图片信息处理
  {
    IsImg=true;
    ImgObj.src=obj.value;
    CheckProperty(obj);
    return false;
  }
  else
  {
    FileMsg="/n文件扩展名:"+FileExt;
    ShowMsg(FileMsg,true);
  }
 
}

function SwitchUpType(tf)
{
    if(tf)
     str='<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">'
    else
     str='<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">'
    document.all.file1.outerHTML=str;
    document.all.UploadButton.disabled=true;
    MsgList.innerHTML="";
}

</script>
<form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;">
<fieldset style="width: 372; height: 60;padding:2px;">
<legend><font color="#FF0000">图片来源</font></legend>
<input type="radio" name="radio1" checked onclick="SwitchUpType(true);">本地<input type="radio" name="radio1" onclick="SwitchUpType(false);">远程:<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;"> <input type="submit" id="UploadButton" value="开始上传" disabled><br>
<div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;">
<table border="0"><tr><td width="60" id="PreviewImg">预览区</td><td id="MsgList" valign="top"></td></tr></table>
</div>
</fieldset>
</form>

Web—文件上传 文章目录一、文件上传1、上传攻击的原理 一、文件上传 概念:文件上传攻击是指攻击者利用Web应用对上传文件过滤不严的漏洞,将应用程序定义类型范围之外的文件上传到Web服务器,并且此类文件通常为木马,在上传成功后攻击者即可获得当前文件的webshell。 攻击者的目标是取得当前Web服务器的权限,如果通过Web层面展开攻击,那必须将攻击者的木马插入到Web系统中,并在服务器端执行,这个过程就是对Web服务器进行文件注入攻击。 1、上传攻击的原理 ... 阅读详情

相关推荐

文件上传类型总结

1.前端代码 2.逻辑绕过 3.文件内容检测 4.文件包含、文件备份 5.网站后台 6.容器及语言特性 7.畸形报文 8.系统特性 9.SQLI方面

qq_24196029的博客 1889

判断是否当前程序是前台程序

public boolean check(){ try{ activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); packageName = this.getPackageName(); List&lt;RunningAppProcessInfo...

朴勇佑的专栏 697

鸿蒙手机卸载内置应用 adb连接

**傻瓜式删除鸿蒙系统内置应用,自己亲测有效。**

JJDXBT的博客 3万+

文件上传绕过

解题链接: http://ctf5.shiyanbar.com/web/upload 首先随手上传了一个图片,得到返回:再尝试php文件,得到返回很明显,题意为卡住php后缀,逼迫你上传文件后缀为jpg等类型,典型的上传绕过问题上传绕过解题思路可参考我转载的【文件上传检测的基本思路】,一般按照思路逐步尝试即可,简单的大小写,加后缀不可过,此题无js,猜测为0x00截断上传,此处仔细分析何为0x00...

qq_25987491的博客 1791

Windows 11下WSL2安装CUDA避坑指南:从驱动版本匹配到环境变量配置

本文详细解析了在Windows 11的WSL2中搭建CUDA开发环境的完整流程与核心避坑要点。关键在于理解“驱动在Windows,工具链在Linux”的独特架构,并确保显卡驱动与CUDA Toolkit版本严格匹配。指南涵盖了从驱动验证、WSL-Ubuntu专用仓库安装、环境变量配置到GCC版本冲突、GPU算力不匹配等常见问题的解决方案,帮助开发者高效构建稳定的深度学习与高性能计算环境。

smartcontract5的博客 468

史上最全的Logisim运算器实验教程(基于华中科技大学计算机组成原理实验)

本博客是实现了Logisim的运算器设计,有具体的运算器设计的思路和运算器设计的电路,适合一步一步的按照思路做。

qq_62325622的博客 4万+

文件上传原理及流程

感谢原博主: http://blog.sina.com.cn/s/blog_8f32dc250100wva8.html 一、HTTP文件上传 html   type:类型 name:名字 method:post (post与get的区别是,post下参数值不会放在url后面,更加安全) enctype:属性规定在发送到服务器之前应该如何对表单数据进行编码。 f

我的博客 1万+

虚拟机Ubuntu连接USRP

笔记本通过网线连接USRP。

xiaozir的博客 2309

java web - 限制文件的上传类型为图片类型(.gif,.png,.jpg,.jpeg)

1.使用ajax function insertTitle(tValue){ if(tValue!=''){ var len = tValue.length; var str = tValue.substr(tValue.lastIndexOf("."),len); if(str=='.jpg'||str=='.JPG'||str=='.gif'||str=='.GIF'||str=='.

qq_31420401的博客 1万+

单相变换器的二次纹波分析

1. 单相PWM整流器的二次纹波产生原因   单相变换器的二次纹波产生的原因是功率含有二次脉动分量。设电网电压 us=Vmsin(wt),电网电流IL=Imsin(wt−θ)I_L=I_msin(wt-\theta)IL​=Im​sin(wt−θ)。其中w是电网电压披绿,θ\thetaθ是电流之后电压相位。保证输入功率和输出功率相等,就要保证两者的直流量和交流量对应相等。   uDu_DuD​为 PWM 整流器直流电容电压平均值,IoI_oIo​ 为负载电流平均值 ,uDC^\widehat {u_{DC}

qq_38847810的博客 4974

双内核架构 Xenomai 4 安装教程

双内核 Xenomai 4 安装指南

^_^ 4471

文件上传的检测方式和绕过方法

一、客户端检测(例:js检测) 客户端检测最典型的方式就是 JavaScript 检测,由于 JavaScript 在客户端 执行的特点,可以通过修改客户端代码或先上传符合要求的文件再在上传过 程使用 BurpSuite 等工具篡改文件等方式来绕过。 绕过方法 抓包:修改文件后缀。 浏览器关闭js 二、MIME 类型检测 是设定某种扩展名的文件用一种应用程序来打开的方式 类型,当该扩展名文件被访问的时候,浏览器会自动使 用指定应用程序来打开。 多用于指定一些客户端自定义的文件名,以及一些媒体 文件打开

qq_45775897的博客 7156

优化算法 | 赏金猎人优化算法(Bounty Hunter Optimizer, BHO)及其在多无人机移动边缘计算与路径规划中的应用(附matlab源代码)

移动边缘计算(Mobile Edge Computing, MEC)通过将计算资源下沉至网络边缘,有效解决了物联网终端设备计算能力不足与能耗受限的问题。无人机(Unmanned Aerial Vehicle, UAV)因其高机动性、灵活部署和广域覆盖等优势,被广泛用作MEC的移动服务器平台。多无人机辅助MEC系统的核心优化问题在于:如何在满足任务处理时延约束和无人机能量限制的前提下,联合优化无人机的三维飞行轨迹、任务卸载决策与计算资源分配,以最小化系统总能耗或最大化任务完成效率。

尘世冰封的专栏 224

js上传图片,同时生成缩略图

转自 New Document 文件上传前台控制检测程序    body,td{font-size:12px;}        /*----------------------------------------           文件上传前台控制检测程序 v0.6    远程图片检测功能    检测上传文件类型   

穆穆里的专栏 5008

【华为OD机试真题】4、字符统计及重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数, 并按照字母出现次数从大到小的顺序。输出各个字母及其出现次数。 如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前

KJ.JK 3289

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【网络安全】文件上传黑白名单及数组绕过技巧

将客户端数据以文件形式封装,通过网络协议发送到服务器端,在服务器解析数据,最终在服务端硬盘上作为真实的文件保存。

goldfish8848的博客 2728

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jspwen文件上传

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/htm

Tank03的专栏 155

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文件上传绕过方法总结

文件上传绕过方法总结

lza20001103的博客 1286

SpringMVC 中的控制器如何处理文件上传

本文介绍了 Spring MVC 中的控制器如何处理文件上传请求。我们通过配置文件上传解析器和使用 @RequestParam 注解获取上传的文件对象来实现文件上传功能。同时,我们还介绍了如何将上传的文件保存到指定的位置。希望本文能够帮助读者理解 Spring MVC 中的文件上传机制,并能够在实际项目中应用。

程序猿徐师兄的博客 470

文件上传攻防

比如使用“.php5”、“.phtml”、“.php.jpg”等扩展名,其中“.php5”和“.phtml”在某些服务器配置下可能被误认为是合法的文件类型,而“.php.jpg”则可能在只检查扩展名的服务器上被认为是图片文件而允许上传,但实际上可以通过解析漏洞被当作 PHP 脚本执行。因为文件头信息是文件的特定标识,不同类型的文件有不同的文件头信息,通过检查文件头信息可以更准确地确定文件的真实类型。例如,上传一个木马程序,获取服务器的控制权,或者上传一个病毒程序,感染服务器上的其他文件。

m0_57836225的博客 1092

文件上传学习

总结一下这几天学习的文件上传的一些小知识点

竹盐笙熙的博客 824

简单的文件上传漏洞

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理服务器管理权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。[1]顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作命令。webshell主要用于网站和服务器管理,由于其便利性。

2301_76914258的博客 1085

Python自动化批量检测金蝶Apusic文件上传漏洞实战

文件上传漏洞是Web安全中常见的高危风险点,其原理在于服务器对用户上传的文件缺乏严格的校验机制,如未验证文件类型、扩展名或内容,导致攻击者可上传恶意文件。从技术价值看,自动化检测工具能显著提升安全测试效率,将渗透测试工程师从重复劳动中解放。在应用场景上,企业安全团队常需对大量资产进行周期性漏洞扫描,尤其是在使用特定中间件如金蝶Apusic应用服务器时。本文以Python实现了一个针对该场景的批量检测脚本,通过模拟真实攻击链(构造请求、上传POC文件、验证访问)来精准识别漏洞,并利用并发扫描提升效率。工具设计

java天气 378

微信小程序——如何做文件上传和检测人脸

首先,用thinkphp框架在控制器中写一个uploud()方法:public function upload(){ $upload = new \Think\Upload();// 实例化上传类 $upload-&gt;maxSize = 3145728 ;// 设置附件上传大小 $upload-&gt;exts = array('jpg', 'gif', '...

lixiaotong_123的博客 1134

文件上传漏洞常见客户端与服务端检测绕过

客户端和服务端的文件上传的检测和绕过方法,通过一些实验案例了解文件上传漏洞的危害和一些常见类型,理解文件上传的利用条件。

bwxzdjn的博客 4863
上一篇: 理解PHP中的MVC编程之MVC框架简介
下一篇: php生成缩略图
mzphp
博客等级 码龄21年 9粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值