upload-labs浅谈

首先列一下我认为的upload-labs学习要掌握的东西,不仅要有对工具的使用了解,还给有对文件上传的理解。这两天本菜陷入了一个究极难题循环,让我很绝望,在多个视频的观看下,终于大致了解了原因,开始得本菜在burp改包传一句话木马<?php @eval($_POST['pass']);?>之后页面都会直接崩溃无法,久久不能连接的情况(连接被重置入如下图)在这里插入图片描述
开始的我一直以为是代理没有关闭,或者是burp suite操作不当的原因,但实际上貌似是因为我传马的原因,因为本菜是用阿里云服务器搭建的靶场,传马导致阿里云服务器自己采取了封ip的措施,才导致这样的结果,(封的时间还不断,不过只是封一段时间,本菜昨晚做完睡醒之后今上午好了又尝试了一次,结果又被封了,但现在又康复了),不得不佩服阿里云的服务器还是牛逼啊。。。。,闲话不提开始学习总结,先上传一个upload的理解纲要在这里插入图片描述
靶场的搭建依旧是docker,docker search之后pull,然后docker run就行了
下面进入正片
LESS-01
第一题就是一个前端的检测,目前找到了三种办法第一种F12打开编辑器,把JS那块儿(checkfile()函数那块)的都删除掉,就可以成功上传了,第一种就是在firefox的url栏里输入about:config,从中找到JavaScript .enabled把true改成false在这里插入图片描述
第三种就是用burp进行改包操作,首先要改成可以上传的形式,在之后抓包的时候再把他它改成.php格式如下图箭头处在这里插入图片描述
鉴于之前传马被阿里云服务器制裁的失败经历传的是phpinfo(),在这里插入图片描述
LESS-02
根据提示差了一些大佬的资料
Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,

在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。

例如:

text/html 代表 HTML 格式
image/gif 代表 GIF 图片
Image/png 代表 GIF 图片
application/octet-stream 二进制流,不知道文件类型(PHP)
application/json 代表 JSON 类型
对比了一下上传.jpg和.php的上传抓包情况找到区别,将application/octet-stream改为Content-Type: image/jpeg,成功绕过限制在这里插入图片描述
看了看源码果然自己的想法没啥问题在这里插入图片描述
LESS-03
这一关是另类的文件名的绕过,可以尝试phtml,php3,php4, php5, pht后缀名都可以绕过,但是前提是要在配置文件里面有这样的一句话,AddType application/x-httpd-php .php4t .phtml .phps .php5 .pht
由于本菜是用docker容器搭建想编辑没有那么容易,经过查询只能这样要么在容器内拷贝文件出来修改,要么只能再容器内下载vim在这里插入图片描述
在这里插入图片描述

LESS-04
上面的方法已经不行,因为观察源代码会发现他的过滤无敌多。
这里选择上传.htaccess文件进行绕过,同样要跟之前一样再配置文件里加两句话AllowOverride All和LoadModule rewrite_module modules/mod_rewrite.so
上传一个.htaccess,文件内容如下<FilesMatch "gg.jpg"> SetHandler application/x-httpd-php </FilesMatch>
在这里插入图片描述
然后再上传gg.jpg
在这里插入图片描述
LESS-05
上传webshell失败,并且根据提示,限制了.htaccess文件的上传,并且有强大的黑名单在这里插入图片描述

却忽略了大小写将后缀改成大写成功绕过
LESS-06
空格绕过
在这里插入图片描述
与上面对比发现没有对空格进行过滤
LESS-07
在这里插入图片描述
依旧是与四做对比没有对点进行防护
gg.php.完成上传
LESS-08
在这里插入图片描述
依旧与4做对比发现没有对后缀名中的’:: D A T A ’ 进 行 过 滤 。 在 p h p + w i n d o w s 的 情 况 下 : 如 果 文 件 名 + " : : DATA’进行过滤。在php+windows的情况下:如果文件名+":: DATAphp+windows+"::DATA"会把:: D A T A 之 后 的 数 据 当 成 文 件 流 处 理 , 不 会 检 测 后 缀 名 . 且 保 持 " : : DATA之后的数据当成文件流处理,不会检测后缀名.且保持":: DATA,."::DATA"之前的文件名。利用windows特性,可在后缀名中加” :: D A T A ” 绕 过 : 所 以 用 g g . p h p : : DATA”绕过: 所以用gg.php:: DATAgg.php::DATA
LESS-09
在这里插入图片描述
注意他file_的是name而不是ext
导致可以利用1.php. .(点+空格+点)来绕过
LESS-10
在这里插入图片描述
str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。
所以用双写就可以了
LESS-11在这里插入图片描述

由题提示本LESS上传路径可控,截断上传的原理:在url中%00表示ascii码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束,而忽略后面上传的文件或图片,只上传截断前的文件或图片
将路径改为path=“upload/11.php%00”,那么拼接之后,文件上传时就变成了
“upload/11.php%11.jpg”,这时上传便将11.php上传进去,而11.jpg则被截断

还需注意要进行配置才能进行%00绕过
截断条件:1.php版本要小于5.3.4
2.php.ini文件magic_quotes_gpc需要为Off状态
LESS-12
与LESS-11相比不同在于$_POST[‘save_path’],save_path是通过post方式传的

同样是通过%00截断绕过,但是不能直接抓包在后面加上%00,因为post不会像get一样对%00进行自动解码

要在burp中Hex二进制修改,将70 68 70后面的2b改为00即可绕过
在这里插入图片描述
LESS-13-15
只是对开头的函数不同但都大同小异,有着前面文件包含漏洞的知识在这里插入图片描述
具体原因也进行一番解释在这里插入图片描述

LESS-16
原理:将一个正常显示的图片,上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分,将Webshell代码插在该部分,然后上传。具体实现需要自己编写Python程序,人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的。
推荐一个博客大佬们继续学习一下https://xz.aliyun.com/t/2657#toc-2
LESS-17-18
条件竞争
这里是条件竞争,先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除,因此我们可以上传1.php只需要在它删除之前访问即可,可以利用burp的intruder模块不断上传,然后我们不断的访问刷新该地址即可具体操作并未演示
LESS-19
在这里插入图片描述
pathinfo() 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

看例子,即可知道此关pathinfo($file_name,PATHINFO_EXTENSION);得到的是后缀。此关依旧可以用00跳过
LESS-20
跟代码审计有关,,,,云里雾里。。。附上一份博客择日再战
https://xz.aliyun.com/t/4029#toc-16

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值