Pass-01&Pass-02

upload-labs-master

upload-labs-master:是上传文件的靶场

Pass-01

我们可以看出,在这里就是一个对文件格式的一个只有前端验证,格式为 .jpg  .png  .gif  三种格式,所以我们需要绕过前端验证就行。

 

 第一种方式:绕过前端验证

进入页面,刷新页面,进入检查,注销掉前端检查文件格式的js,如下所示:

 

 注销掉完成后,我们再上传,发现一次请求,该shell文件就会被上传。

 

 

 

 第二种方式:Burp抓包·,改变文件后缀名。、

 

 我们可以发现,可以显示传入后台文件。

显示后台文件路径:打开浏览器检查:找到如下:

 

 

 

Pass-02

MIME介绍
所以首先要搞清楚MIME在数据包的哪里,MIME是个什么

关于MIME,由百度百科可知

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

即文件的后缀

常见的类型如下:

超文本标记语言文本 .html text/html

xml文档 .xml text/xml

XHTML文档 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文档 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG图像 .png image/png

GIF图形 .gif image/gif

JPEG图形 .jpeg,.jpg image/jpeg

au声音文件 .au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

任意的二进制数据 application/octet-stream

出现在HTTP数据包中的可能位置有:

MIME信息头有:

MIME-Version:

这个头提供了所用MIME的版本号。这个值习惯上为1.0。

Content-Type:

它定义了数据的类型,以便数据能被适当的处理。有效的类型有:text,image,audio,video,applications,multipart和message。注意任何一个二进制附件都应该被叫做application/octet- stream。这个头的一些用例为:image/jpg, application/mswork,multipart/mixed,这只是很少的一部分。

Content-Transfer-Encoding:

这是所有头中最重要的一个,因为它说明了对数据所执行的编码方式,客户/MUA 将用它对附件进行解码。对于每个附件,可以使用7bit,8bit,binary ,quoted-printable,base64和custom中的一种编码方式。7bit编码是用在US ASCII字符集上的常用的一种编码方式,也就是,保持它的原样。8bit和binary编码一般不用。对人类可读的标准文本,如果传输要经过对格式有影响的网关时对其进行保护,可以使用quoted printable 。Base64是一种通用方法,在需要决定使用哪一种编码方法时,它提供了一个不用费脑子的选择;它通常用在二进制,非文本数据上。注意,任何非7bit 数据必须用一种模式编码,这样它就可以通过Internet邮件网关!

Content-ID:

如果Content-Type是message/external-body或multipart/alternative时,这个头就有用了,它超出了本文的范围。

Content-Description:

这是一个可选的头。它是任何信息段内容的自由文本描述。描述必须使用us-ascii码。

Content-Disposition:

一个试验性的头,它用于给客户程序/MUA提供提示,来决定是否在行内显示附件或作为单独的附件。

MIME段头(出现在实际的MIME附件部分的头),除了MIME-Version头,可以拥有以上任何头字段。如果一个MIME头是信息块的一部分,它将作用于整个信息体。例如,如果Content-Transfer-Encoding显示在信息(指整个信息)头中,它应用于整个信息体,但是如果它显示在一个MIME段里,它"只能"用于那个段中。

注意:其可以对自动对收到的邮件进行解密。

 

 解题过程
所以我们先判断可以上传的文件类型以及MIME在本题中出现的位置

先上传一个jpg文件然后抓个包试试看

 

我们找到了MIMIE的位置,在Content-Type中

文件上传成功,说明还是png类型的文件可以传

 

 

 

那么这次就上传一个 php文件

 

 

 

弹出错误信息

 

 

这个提示和Pass01的提示不太一样

Pass01是弹窗形式,Pass02显然是发送了数据包页面返回的信息,所以应该是可以抓包的

于是抓包看看,然后修改Content-Type

 

 

 

将php的Content-Type修改和jpg一样的

然后在upload目录下找我们上传的文件

 

文件上传成功

 

再进行蚁剑连接!!

 

posted @ 2021-12-31 23:17  我就去睡觉  阅读(129)  评论(0编辑  收藏  举报