文件上传靶场

第一关–前端js绕过

 1.上传php文件,发现用bp抓不到包,证明数据包没出前端就被拦截。
 2.可上传一个代码允许的文件,绕过前端后,利用bp将类型改为php即可

第二关–content-Type绕过

1.通过代码审计可以得知代码用来区分是否可以上传的文件类型主要靠content-Type

在这里插入图片描述

2.因此先上传一个php文件,再bp中将content-type修改为代码中所述类型,或者如果看不懂代码
可以先上传一个jpg(允许的类型),将包中content-type复制下来,粘贴到php的包中即可

第三关–特殊后缀绕过(php3,php5)

1.拓展知识,在一些配置下,php3.5.7等均可以php的方式解析
2.若不能解析:
      方法1.在apache配置文件中找到addtype application/ x-httpd-php 这句话并在后面加入php3,5等,若是还不行,就找php版本后缀为ts的重新配置
      方法2.在配置文件找不到这句话,则看”多觉少梦“的”phpstudy的apache服务器无法解析运行以.php5,.phtml等非.php后缀的文件的解决方法“
3.操作,将后缀修改并上传连接蚁剑

第四关–.htaccess绕过

1.由提示可知,无法使用php3等方式绕过,但未禁止.htaccess文件
2..htaccess文件为局部配置文件,修改即可生效,无需重启apache
3.编写.haccess文件--AddType application /x-httpd-php .jpg(以解析php'的方式解析jpg文件)
4.操作:先上传.htaccess文件,然后上传.jpg文件(由php文件改后缀而来,或者在页面打开终端,输入copy 1.php + 111.jpg/b 000.jpg也可以得到含木马的照片)
5.如果.htaccess文件上传无法连接,说明配置文件中不允许.htaccess文件来覆盖或修改配置---解决方法:打开httpd-conf
文件,搜索AllOverride 并将其后面的none改为ALL即可

在这里插入图片描述

第五关–user.ini绕过

前置知识

user.ini
作用:特定于用户或特定目录的配置文件,通常位于Web·程序的根目录下。它用于覆盖或追加全局配置文件(如·php.ini)中的·PHP·配置选项。
作用范围:存放该文件的目录以及其子目录
优先级:较高,可以覆盖php.ini
生效方式:立即生效

php.ini
作用:存储了对整个·PHP·环境生效的配置选项。它通常位于·PHP·安装目录中
作用范围:所有运行在该·PHP·环境中的·PHP·请求
优先级 :· 较低
生效方式:重启php或web服务器**加粗样式**    
   
.htaccess
作用 : 分布式配置文件,一般用于URL·重写、认证、访问控制等
作用范围:特定目录(一般是网站根目录)及其子目录
优先级:较高,可覆盖Apache·的主要配置文件(httpd-conf)
生效方式:修改后立刻生效

httpd-conf
作用:包含Apache·HTTP·服务器的全局行为和默认设置
作用范围:整个服务器
优先级:较低

加载方式:会首先加载·php.ini/httpd-conf·文件中的配置。
然而,如果在某个目录下存在 ·. user.ini/.htaccess·文件,
服务器会在处理请求时检查该目录,并覆盖相应的配置项。←

.user.ini 可以生效的前提:
最好大于5.3.0,最好是用7.X版本的
Server·API·为CGI/FastCGI ------- Phpinfo()查看 Server·API企
(Server·API(Application·Programming·Interface,应用程序编程接口)是一组定义了软件组件之间交互方式的规范。在这种情况下,
Server·API·是指用于连接和交互的服务器端软件接口。)企
user.ini 文件上传漏洞的前提:
.user.ini 可以生效并且该上传目录有php文件

补充:查看API方式–

1.打开根目录,在里面创建一个php(例如phpinfo.php)文件,内容为<?php phpinfo();?>
2.在浏览器中访问127.0.0.1/phpinfo.php,

在这里插入图片描述

如图即可看到

操作:

1.创建一个.user.ini文件,内容为auto_prepend_file = 111.jpg(这里的文件是由.php文件修改而来)--内容含义为目录中php文件执行时自动包含111.jpg的内容
2.编写111.php(内容为<?php @eval($_POST['a']);echo"包含成功"?>,并改后缀为.jpg
3.将两个文件上传,访问read me.php(upload内部已存在的文件,只有这样,文件包含才能将输入的木马包含进来)
4.在看到页面上出现包含成功四个字,则可以连接蚁剑了

方法二–点空格点绕过

基础:

1.windows可以自动删除.和空格--例如1.php.数据包发过去后windows会自动把后面那个点删去
2.上传路径为upload/文件名(这里只有第三关和第十关具备该条件)
3.对于过滤操作只进行一次!
注意:蚁剑连接时文件后缀删去最后一个点,因为windows自动删除,若加点就会识别不出来
文件名为1.php.(空格),后缀为.

第六关–大写绕过

1.因为windows会自动将大写改为小写,所有需要在bp进行修改
2.通过源码可知,无将大写转化为小写函数strtolower()

第七关–空格绕过

1.由代码审计可知无trim()函数--首尾去空

第八关–加点绕过

1.由代码审计可知--无deldot()函数--去除文件名后面的点

第九关

前置知识–额外数据流

1.额外数据流依附于一个文件,但平常打开时是无法显示的eg:1.txt::$DATA即为附加的额外数据流
2.写入方法于查看方法
      写入(在cmd中):1,echo (额外数据流内容--例:)"你好">>1.txt:nihao--额外数据流存放名
                    2. type(需要两个文件1.txt/2.txt假设将2.txt的内容写入1的额外数据流)
                         type 2.txt>>1.txt:nihao
      查询:notepad 1.txt:nihao

操作

基础:1.php对于文件额外数据流后缀是不加检验的
     2.windows系统中是不允许::$DATA这样的后缀存在的,会自动删除
     3.在上传的过滤中没有删除::DATA的操作
操作:1.上传一个php文件,bp抓包,增加额外数据流后缀--即可绕过上传
     2.在浏览器中打开,注意在URL栏中要将额外数据流后缀删除因为windows会自动删除
     3.蚁剑连接同样后缀名去掉

第十关–点空格点绕过

 1,原理参照第五关
 2. deldot()删除点函数是由后至前进行的

第十一关–双写绕过

 基础/辨认:1.源码中有str_ireplace()函数--会将后缀名以空格替换,且从左往右进行
 操作:1.上传一个.php文件,用bp抓包,将后缀改为pphphp
      2.打开上传文件,即可连接蚁剑

第十二关–%00截断(白名单限制)

前置知识

 1.0x00,%00均表示空字符,前者适用于编程语言,后者适用于url编码
 2.URL编码是由ASCII编码转换为16进制,前加%组成
 3.当程序读取到·空字符会自动截至后面不再读取

操作

1.上传一个jpg文件(php改后缀而来)
2.bp抓包,修改文件保存路径为upload/1.php%00 HTTP/1.1
3.上传,浏览器打开文件时删去后面的时间序列加点后缀,保留至1.php即可,蚁剑连接

原理:

通过空字符阻隔,使得上传文件以php格式解析,若不加%00,那么文件保存目录就会在1.php目录下方储存,这样的方式是操作系统所·不允许的

第十三关–0x00截断

1.与12关的区别在于,12关获取保存路径是以get方式即在URL栏中获取(可直接在浏览器上方URL栏进行修改),而13关为POST方式,需在bp修改
2.操作:同样上传.jpg文件,bp抓包,在upload/加1.php,
  注意的是,不可以直接加0x00因为会被识别为字符串,浮标往后移一位,选中空格,在右方栏中code,写入00,点击change,即可上传成功

字节标识绕过

前置知识

1.每一类型文件有其独特的字节标识,有时候可以用来作为鉴别文件类型的一种方法
2.举例:
    JPEG/JFIF(常见的照片格式):头两个字节为·OxFF·OxD8。
    PNG(无损压缩格式):头两个字节为·0x89·0x50
    GIF(支持动画的图像格式):头两个字节为·0x47·0x49。
    BMP(Windows位图格式):头两个字节为·0x42·0x4D。
    ITIFF(标签图像文件格式):头两个字节可以是不同的数值。
3.可以显示文件的十六进制编码的方式:
       viscode 中HEX editor扩展,右键单击文件选择以其他编辑方式打开,添加时浮标置于前方,删除时按delete键
       或者使用01.editor软件也可以
4.文件包含漏洞,为了资源利用率的提高,php在编写的时候,允许将需要的文件直接以被包含的方式进入主文件,并且以主文件解析方式进行解析

操作

1.打开一个php文件,添加允许通过的文件类型的字节标识
2.上传文件,发现打不开
3.在目录中找一个php文件,以文件包含漏洞来使该文件能使php方式解析(假设主php文件为include.php),URL(get方式提取)可以编写为include.php?file=./upload/时间前缀加文件类型(自己添加什么类型的字节标识就填什么类型)-----“./”为当前目录即可打开
4.连接蚁剑

第15关–图片马绕过

前置知识

      getimagesize()·函数返回一个包含图像信息的数组。该数组的索引如下所示:
      索引·0:图像的宽度(单位:像素)
      索引·1:图像的高度(单位:像素)
      索引·2:图像类型的常量值(可以使用·image_type_to_mime_type()·函数将其转换为·MIME·
类型)
      索引·3:包含图像属性的字符串,以逗号分隔(如·"width=500,height=300”) 如果·getimagesize()·       函数无法读取图像信息,则返回·false。否则,返回一个包含上述索引的数组。
      IMAGETYPE_GIF:代表·GIF·图像文件的常量值
      IMAGETYPE_JPEG:代表·JPEG·图像文件的常量值
      IMAGETYPE_PNG:代表·PNG·图像文件的常量值
      IMAGETYPE_SWF:代表·SWF·(Shockwave·Flash)·文件的常量值
      IMAGETYPE_PSD:代表·Adobe·Photoshop·的·PSD·文件的常量值
      IMAGETYPE_BMP:代表·BMP·(Bitmap)·图像文件的常量值

操作

1.创造一个图片码--cmd copy 1.png/b+111.php hack.png(注意顺序,一句话木马必须放在最后面)
2.上传后同样与14关一样使用文件包含,以php方式进行解析	     

第十六关–图片马绕过

操作同15关相同

第十七关–二次渲染

1.由代码审计可知,程序会对上传的内容进行重写,删去与文件格式不符的内容,所以图片马的方式行不通

操作

1.上传一张gif图片(最好是gif--不变地方多,不加一句话木马),将经过渲染后的图片复制,在010editor进行对比,找出没有改变的代码块
2.将一句话木马插入其中,最好是中间,将图片再次上传即可将一句话木马上传
3.接下来就是使用文件包含以php方式进行解析

第十八关–条件竞争

1.由代码审计可知,这一个的过滤流程为先将文件上传到服务器,然后进行删除操作--这也是出现条件竞争的原因,我们可以利用大数额攻击上传,乘服务器来不及反应一瞬间执行一句话木马,但这里因为时间短,一句话木马不能连一下就行,所以采取小马
2.小马编写:<?php fputs(fopen('shell.php','w'),<?php @eval($_POST['a'])?>');?>---意思是打开一个文件shell.php并向内写入一句话木马,如果不存在该文件则创建一个
3.打开bp抓包,先抓一个php上传的包,在intruder进行大数额上传,随后在URL栏中改为upload/2.php---为访问2.php的路径,再次进行抓包,最后两个请求同时进行大数额访问,利用条件竞争来使2.php被上传的瞬间访问生成shell.php

第十九关–apache解析漏洞+条件竞争绕过

apache解析漏洞:

 apache在解析文件名时,从后往前,不解析.7z

过滤机制

 1.先判断后缀
 2.上传服务器
 3.对文件进行重命名

原理

1.上传一个文件,后缀为.php.7z,程序检查会默认后缀为.7z,成功上传
2.在上传服务器以及重命名期间,利用条件竞争访问1.php.7z,这时由于无法解析.7z就会以php解析,成功执行小马

操作

1.同时对上传与访问进行大数额请求

第二十关–后缀绕过

1.本关的过滤机制为先判断后缀是否合格,再上传服务器,且后缀取小数点后面的,这样所有的后缀类型均可绕过
2.还有一种就是1.php0x00.jpg

第二十一关–审计加数组后缀绕过

审计:

1.可以通过的后缀类型用content-type进行判断
2.若果上传文件类型不为数组,则通过小数点将其分割为数组,若是则不分
3.取$file(end)--下标最后一个作为后缀进行判断
4.上传路径为file(0)+“.”+真实有效数组下标数量-1

原理

1.如果上传数组下标最后为8那么除了0,1,8其余皆为无效数组,那么上传路径为file(0)/空,此时我们可以将file(0)上传为1.php ,file(8)为.jpg,这个endfile只要大于1就行,路径合成为
1.php.–windows会自动删去末尾的点

上传修改

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值