upload-labs pass1-9

目录

pass-01 JS绕过

pass-02 content-type绕过

pass-03部分黑名单绕过

pass-04 .htaccess绕过

pass-05 .user.ini绕过+. .绕过(点空格点绕过)

pass-06 大小写绕过

pass-07 空格绕过

pass-08 点绕过

pass-09 ::$DATA绕过


pass-01 JS绕过

上传一个webshell到服务器

上传区要我们选择上传的图片

我们可以试着上传一个图片

可见我们成功上传了

再试着上传一句话木马

<?php phpinfo();?>

被拦住了,该文件不允许上传,说是文件类型不被允许

查看页面源代码,发现文件类型和弹框是由前端JS代码校验的。

查看提示

解决这个问题有两种方法:

1.禁用浏览器js

2.burpsuite抓包

把.jpg改为.php即可,就是改为它允许上传的文件类型

 

 出现了以下页面,即没加载成功的图片,则表示webshell成功上传

复制图片地址查看一下

pass-02 content-type绕过

上传php文件

 这次只告诉我们文件类型不正确,但没告诉我们哪类文件类型是正确的

查看源码,发现对['upload_file']['type']的检测

查看提示

什么是MIME?

在HTTP中,MIME类型被定义在Content-Type header中。Content-Type(内容类型)一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。
 

 使用bp抓包

修改content-type

当文件上传后,content-type会标记文件类型,简单来说当我们上传一个1.php文件的时候,content-type会自动将我们这个文件类型标识为application/octet-stream,不匹配时上传失败,这里仅允许content-type为image/jpeg,image/png,image/gif属性的通过

将content-type标识的application/octet-stream修改为image/jpeg

这样也就可以成功上传了

pass-03部分黑名单绕过

上传php文件

这次提醒我们不允许以下后缀的文件上传

查看源码

查看提示,禁止了一部分后缀文件的上传

抓包

那我们就给一句话改一下后缀,然后上传,进行抓包

先把.php改为.png

 

可以成功上传

pass-04 .htaccess绕过

上传php文件

 这时只提示此文件不允许上传,也没说哪些可以上传

查看源码

 查看提示,黑名单拒绝了几乎所有后缀名

这一关在后端使用了黑名单,并过滤了空格,点,以及大小写 , 但未过滤 .htaccess(分布式配置) , 固此关卡使用 分布式配置文件绕过黑名单。

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

准备一个 .htaccess 文件 , 内容如下:

<FilesMatch "2.jpg(即将上传的文件名)">

  SetHandler application/x-httpd-php

</FilesMatch>

这段代码的意思就是把2.jpg当作php文件去执行。

还要准备一个2.jpg的一句话木马,要把后缀名改为jpg。

 

先上传.htaccess文件

 

上传成功

再上传2.jpg文件

上传成功

用浏览器访问一下,可以成功访问

pass-05 .user.ini绕过+. .绕过(点空格点绕过)

查看源码

查看提示,上传目录存在php文件

 

可使用.user.ini绕过黑名单

 我们先上传一个.user.ini文件,内容为auto_prepend_file=5.gif
表示该目录及其子目录下所有的php文件在执行时,自动在头部包含一个5.gif文件

 然后上传一个包含一句话木马的5.gif文件即可

抓包,改一下后缀

pass-06 大小写绕过

查看源码,发现可以通过大小写绕过

查看提示,这个连上面的.htaccess文件也禁止了

改一下后缀

上传成功

到浏览器访问一下

pass-07 空格绕过

查看源码

在读取源码的过程中,发现并没有写出过滤出首尾空格这一个限制

所以,我们可以在第七关,利用空格绕过限制

 抓包

后缀名后面加空格

pass-08 点绕过

查看源码,可以通过点绕过

抓包,改后缀

上传成功

到浏览器访问

 

pass-09 ::$DATA绕过

查看源码

与前面不一样的是,少了一句话

与前面不同的是,它没有对::$DATA进行过滤,所以我们可以用此来进行绕过,其次是此关在移动文件的时候只移动了文件名,并没有增加后缀名。此关我们就是运用::$DATA的效果来让脚本不检测后缀名

本关没有对后缀名中的::$DATA进行过滤。在php+windows的情况下:如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名且保持::$DATA之前的文件名。利用windows特性,可在后缀名中加::$DATA绕过

上传文件,进行抓包

上传成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值