upload-labs pass6-pass10

1.pass-6黑名单 空格绕过

直接上传肯定不可以
在这里插入图片描述
这个地方配置文件虽然只过滤了.htaccess,.user.ini也是不可用的,因为这里进行了重命名,通过代码审计可以发现空格没有过滤,这是利用windows的一个特性,后缀后面有空格和没有空格是一样的
burp抓包,改一下后缀名,添加一个空格
在这里插入图片描述
复制图片地址,访问,成功执行
在这里插入图片描述

2.pass-7黑名单 点绕过

通过代码审计可以发现.没有被过滤了,这也是利用了windows的一个特性
burp抓包,后缀加点

在这里插入图片描述
复制图片连接,访问
在这里插入图片描述

3.黑名单,::$DATA绕过

::$DATA是windows的特性
在这里插入图片描述

通过和上一题对比可以发现,可以用::$DATA绕过,注意文件名被重命名了
抓包改后缀

在这里插入图片描述访问文件,成功执行
在这里插入图片描述
4.pass-9黑名单,点空格点绕过

在这里插入图片描述
这个地方要注意为什么和第8题源码是差不多的,只不过过滤::$data,而第8题却不能绕过,首先过滤空格和删除点的函数都是过滤一次的,当传入1.php. .,在第8题中遇到deldot,会删除.,剩下的1.php.%20,遇到strrchar,变量file_ext值为1.php,之后被重命名为20231456,而遇到trim被删除空格,最后变成了20231456.,只有一个点而没有后缀,不能被解析成php

为什么双写:: D A T A 不能绕过 ? 变量 f i l e n a m e 值没有被过滤,是因为 f i l e e x t 用函数过滤的 , 而 f i l e n a m e 值为 1. p h p : : DATA不能绕过? 变量file_name值没有被过滤,是因为file_ext用函数过滤的,而file_name值为 1.php:: DATA不能绕过?变量filename值没有被过滤,是因为fileext用函数过滤的,filename值为1.php::DA:: D A T A T A w i n d o w s 文件上传时,文件命名是不能含有 : w i n d o w s 会自动把 : : DATATA windows文件上传时,文件命名是不能含有: windows会自动把:: DATATAwindows文件上传时,文件命名是不能含有:windows会自动把::DATA去掉,但上面的不识别时不能被去掉的
在这里插入图片描述

抓包改后缀
在这里插入图片描述
访问文件
在这里插入图片描述
5.pass-10黑名单,双写绕过
在这里插入图片描述
通过审计代码可以发现是用了str_ireplace这个函数,这个函数只会过滤一次

抓包改后缀

在这里插入图片描述

访问
在这里插入图片描述

posted @ 2024-11-02 10:26  mushangqiujin  阅读(8)  评论(0编辑  收藏  举报  来源