upload—labs

首先

 

常见黑名单绕过

$file_name = deldot($file_name);//删除文件名末尾的点
上传 shell.php.

 

$file_ext = strtolower($file_ext); //转换为小写上传 shell.PHP (大小写绕过)

 

$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
上传 shell.php::$DATA

 

$file_ext = trim($file_ext); //首尾去空
上传 shell.php (后跟空格)

 

 前端验证

pass1(前端检测函数)

一般上传错误类型,若有弹窗提示那就是前端检测,没有弹窗的话就应该是后端

查看提示,在客户端进行……,说明在浏览器F12可以进行修改

 直接F12定位输入框

 找到敏感函数checkfile(),直接将其删除

 上传木马php

 上传成功,复制下面返回地址用蚁剑连接即可

 连接成功

 

 后端检测

pass2(MIME类型)

服务端进行MIME检查

 需要上传图片

MIME检查是后端PHP代码只对content-type进行检查,那么就可以

使用bp抓包,修改上传的PHP的content-type为image/png

 注意有两个content-type,不要改错。

 放到重发器进行重发测试

 http://burp/show/1/1zeq145c9byupwa79ryqxcikb6w44x41

查看链接,上传成功

 复制链接,蚁剑连接

 

 

黑名单绕过

pass3(同类型其他后缀名)

禁止上传php后缀格式的文件

 禁止上传php那就试试php5

等价后缀名

 

 上传成功

 复制地址到蚁剑,能连上但是会报错

 看了别人的wp了解以后才知道是数据库版本问题

 

这里我就贴出网址不演示操作了Upload-labs 1-21关 靶场通关攻略(全网最全最完整)_upload靶场_晚安這個未知的世界的博客-CSDN博客

修改完以后蚁剑连接正常

另外,这种攻击方式也成为黑名单绕过

 

pass4(.htaccess

 

方法一(文件后缀绕过)

.htaccess文件

 很多后缀都限制住了,这道题把我难到了,无奈看了wp,学习到了一个新知识:.htaccess文件

 前提是服务器有相关的配置

在这道题我们需要利用.htaccess文件

如果在一个黑名单中添加了很多后缀名,唯独没有对htaccess过滤,可以直接上传.htaccess来设置使用php解析任意文件。

先创建一个文件,用记事本打开

 里面写入内容

1
2
<filesmatch "\.jpg"="">
  SetHandler application/x-httpd-php

  

然后另存为所有文件格式

 然后到网站上传

上传完以后再上传一句话木马图片

用bp抓包

 在重发器中找到文件上传的地址

连接到蚁剑

 

方法二(PHP和Windows环境叠加)

首先用bp拦截,然后观察提交的文件的后缀

 

利用Windows和php对文件检测的特点:构造出muma1.php:.jpg的文件格式

首先,在文件上传到服务器时,php检测到是jpg结尾的文件时可以通过

然后,window检测发现有:(Windows文件命名规则中不能出现:)就自动省略的冒号及后面的东西了,所以就剩下muma1.php,最后就绕过成功

 虽然已经上传上去了,但是木马还没有写到图片里,所以还得进行追加

需要将文件名改成muma1.<再上传

 

然后回到网页复制链接到蚁剑即可

 

 

pass5(加上空格和一个点)

也过滤了pass4的绕过格式

 

 

那就尝试一下常见黑名单绕过,先用bp抓包在原有基础上改变后缀(加上空格和一个点)

 上传成功,在火狐中解析

 复制图片链接到蚁剑,连接成功

 

pass6

和上面的pass5方法一样,直接简单黑名单绕过

 

pass7

换了一种出题风格

 但是做题方式还是和上面的pass5一样,因为不涉及到后缀的问题,直接利用Windows和php语言解析的特性绕过

 

pass8( ::$DATA)

文件流

 

本以为这题将毫无新意

 但是用前面的方法不管用了

 这时候只能换一种方法了(查看了wp才知道)

前面几个pass源代码都会有Windows文件流过滤

 但是这个没有,那我们就可以构造这个后缀  ::$DATA

 继续用bp抓包修改后缀

 然后上传成功,连接蚁剑

 

pass9(.空格.)

只允许上传图片的格式

 这时候我们在客户端上传图片,但是用bp改包

 改成常见黑名单绕过发现失败

 这时候查看wp知道,这道题需要后缀加  .空格.

 加上以后再进行测试则成功了

 

 

pass10(双写字符)

此次会从文件名中去除部分字符

 采用的方法就是双写字符

 成功绕过

 连接蚁剑,不过最后失败了

 将图片地址复制到网址栏发现后缀还是没了

 反思发现双写文件后缀必须是一样的后缀,并且后缀要为小写,不然不成功

 最后成功了

 

 

pass11(00截断

题目新颖,没见过这种表达方式

 查看源码

查看了wp发现这是常见的白名单绕过题目

查看了源码发现这里只允许三种文件格式通过

 因此通过简单的黑名单绕过是不可行的

这时候得用bp抓包进行修改

这个时候采用一种新的知识

00截断

 

 我们在bp中修改路径

 

 

其中上面得%00是空格的意思,因为在Windows系统中文件命名不包含空格,所以会在空格及其后面的字符都给截掉

这个时候再上传就成功了

 

pass12

和上一题一样的提示,但是同样的方法过不去了

 继续bp抓包,不过此次地址的地方换了

 

 而且空格不能直接%00了,要二进制的00

那就去hex那里输入然后再复制“�”

 然后发送过去就行了

 

pass13(文件头

检查开头的两个字节

 这种情况我们直接上传一句话木马图片,然后再用00截断的方式解析图片,最后获得shell

 但是这里没有文件上传到的目录,所以我们还是换一种方式

在一句话木马的php文件上加入“GIF89a”的文件头再上传即可,正常上传.php代码

 改文件头

 

上传成功以后还要在做点手脚,因为文件在服务器中解析成了图片,所以需要在网址出进行点改正——加上“include.php?file=”执行远程包含漏洞

 不过这个网站好像没有这个漏洞

查看wp才知道原来是要自己建一个php文档来生成远程包含漏洞

在这里我就没做了,感觉没什么意义,自己知道了方法就好了

 

pass14(getimagesize()函数)

题目要求

 首先了解一下getimagesize()函数的作用

getimagesize函数会对目标的十六进制的前几个字符串进行读取。比如GIF的文件头为GIF89a,png的文件头为PNG

 无所谓,直接上传一句话木马的图片

上传成功

 进行文件包含执行木马

 

 

pass15(exif_imagetype()函数)

 查看exif_imagetype()函数

 还是采用一句话木马图片

和上一题结果一样没有新意

 

pass16(二次渲染)

二次渲染的题目

 上传一句话木马图片,发现上传后的图片经过渲染木马被移走了

 

 这种情况就需要找它不会渲染的文件部分了,用010的对比功能进行对比

 可以发现还是挺多地方是相同的,说明并没有被渲染,所以可以在这些地方插入一句话木马

 再次进行上传后得到图片,发现木马还在,上传成功

 

pass17(时间竞争)

全新版本

 查看代码

1
2
3
观察源码可知,对于上传的文件处理是先保存到服务器,再对比拓展名,如果拓展名不属于白名单中的后缀,便将保存的文件删除。
这里注意到先保存再进行删除,也就是说有很短的一段时间这个文件是被保存并且可以访问的,我们利用这个先后顺序的中间差时间进行访问,访问到文件即可执行代码。
因为时间差很短,所以我们需要使用脚本进行访问。

 意思是只能是下面的三种文件上传,否则其他的格式的文件一上传就会被删除

 这种情况可以利用bp强行绕过

直接上传muma.php,然后用bp抓包

 然后发送到测试器

 进行=参数设置

 

 直接进行操作,然后再访问网站对应的上传的目录和我们上传的木马文件

 然后再用bp的测试器一直进行攻击,即两边同时进行,利用的就是网站访问muma.php文件,在bp一直上传muma.php和服务器在快速删除muma.php文件的时候,争取快速打开占用muma.php文件,占用文件,执行里面的代码,导致服务无法删除文件,从而达到目的

 

 然后同时启动两个测试器

 最后服务器会保存有文件,就成功挂马了

 

pass18

题目说需要代码审计,但是代码量好大,有点不想看

 看了大概得介绍和上一题的防护措施类似,都是竞争绕过型

不过和17不同,这个需要上传图片类型,即一句话木马图片

 当上传的速度够快时,服务器就有可能来不及重新命名

首先打开bp抓包

 然后在重发器快速的进行重发,直至服务器中出现未重命名成功的文件(奈何手速不够快,我自己试了就没成功过)

道理是这么个道理,那就这样吧

 

pass19(/.绕过)

题目提示看不出来什么东西

 

代码审计一下,黑名单绕过

 

其中这里move_uploaded_file函数有个特点

 所以我们直接修改文件后缀为muma2.php/.即可

 

成功连接

 

posted @   努力的大魔王  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示