WEB安全之:文件上传

本文详细探讨了文件上传的过程,包括浏览器提交请求、WEB程序处理和存储。重点讲解了文件上传漏洞的原理,分析了因程序代码缺陷、系统配置不当、逻辑错误等可能导致的安全风险,并列举了多种绕过防御机制的手段。此外,提到了一句话木马的概念,强调了网络安全的重要性。
摘要由CSDN通过智能技术生成

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

WEB安全之:文件上传

1 文件上传过程

1.1 浏览器打开上传页面

  • # 客户端上传表单
    upload.html
    <html>
    <head></head>
    <body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file"/>
        <br/>
        <input type="submit" name="submit" value="Submit"/>
    </form>
    </body>
    </html>
    
    <!-- enctype:属性规定在发送到服务器之前应该如何对表单数据进行编码。 -->
    <!-- multipart/form-data:在 Web 表单文件上传时使用。 -->
    

1.2 用户提交上传请求

  • 对于 multipart/form-fata 类型的表单,浏览器上传的实体内容中的每个表单字段元素的数据之间,用字段分割线进行分割,每两个分割界线间的内容成为一个分区,每个分区的内容可以被看做两部分,一部分是对表单元字段元素进行描述的描述头,另一部分是表单元字段元素的主体内容。

  • #  抓包分析
    POST /upload.php HTTP/1.1	# 响应头部
    Host: 192.168.100.129
    User-Agent: Mozilla/5.0 (iPad; CPU OS 10_15_5 (Erg.nzendes Update) like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/15E148 Safari/605.1.15
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Content-Type: multipart/form-data; boundary=---------------------------9317842496954838981816999048
    Content-Length: 6221
    Origin: http://192.168.100.129
    Connection: keep-alive
    Referer: http://192.168.100.129/upload.html
    Upgrade-Insecure-Requests: 1
    DNT: 1
    Sec-GPC: 1
    	#空行\r\n
    -----------------------------9317842496954838981816999048
    Content-Disposition: form-data; name="MAX_FILE_SIZE"	# 描述头
    
    100000	# 主体内容
    -----------------------------9317842496954838981816999048
    Content-Disposition: form-data; name="file"; filename="logo.svg"	# 描述头
    Content-Type: image/svg+xml	# 描述头
    	# 空行\r\n
    <svg xmlns="http://www.w3.org/2000/svg" width="589.827" height="361.238" viewBox="0 0 442.37 270.929">...</svg>		# 主体内容
    -----------------------------9317842496954838981816999048
    Content-Disposition: form-data; name="submit"	# 描述头
    	# 空行\r\n
    Submit	# 主体内容
    -----------------------------9317842496954838981816999048--
    

1.3 WEB 程序处理

WEB 程序处理用户提交的数据并将读取到的文件保存为临时文件

  • # 服务器处理请求脚本
    <?php
        if ($_FILES["file"]["error"] > 
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值