文件上传基础学习2
三、靶场实操
5、.htaccess重写解析绕过上传(第四关)
.htaccess
文件是在Apache Web服务器上进行配置的重要文件,它可以用于控制网站的许多方面,包括URL重写和上传文件的处理。攻击者可以尝试绕过文件上传限制,通过编写特定的.htaccess
规则来执行恶意操作。
-
该关卡是将所有的可执行后缀名都加入了黑名单了,利用htaccess重写解析绕过尝试一下
-
准备一个图片码
4.jpg
<?php phpinfo();?>
-
上传文件,然后访问图片,然后访问图片的地址,会出现无法解析的错误
-
在上传一个.
htaccess
文件<FilesMatch "4.jpg"> Sethandler application/x-httpd-php </FilesMatch>
其中,4.jpg是我们刚上传的图片码,然后这个是文件是可以将4.jpg解析为php文件
-
重新访问图片的地址,此时服务器会将该图片文件解析成php文件
6、. .
进行绕过、upload第五关
-
查看页面的源代码
$file_name = trim($_FILES['upload_file']['name']); $file_name = deldot($file_name);//删除文件名末尾的点 $file_ext = strrchr($file_name, '.'); $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //首尾去空
先将文件收尾去空一次,然后删除文件末尾的点,在接着对文件名去空一次
-
上传一个
phpinfo.php
用burpsuite进行拦截,然后后缀名,修改为phpinfo.php. .
-
上传成功后,对上传的文件进行访问
- 在Windows环境下,浏览器(以及许多其他应用程序)会自动省略文件名中的末尾句点(
.
),这是因为Windows操作系统对文件名有一些特殊的处理规则
- 在Windows环境下,浏览器(以及许多其他应用程序)会自动省略文件名中的末尾句点(
7、大小写绕过,upload第六关
-
分析源代码
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
没有对php后缀名进行严格的过滤,存在大小写绕过
-
上传
phpinfo.PHP
文件<?php phpinfo();?>
-
可以成功上传,然后在行的标签页打开上传的文件
8、空格绕过
-
查看页面的源码
发现并没有过滤空格,此时可以试试在后缀名后面加一个空格
-
windows中文件的命名不能以空格结尾,所以用
burpsuite
工具来添加空格 -
在新标签页中打开图像
9、利用windows系统特性,文件名后面加点。upload第8关
在Windows环境下,浏览器(以及许多其他应用程序)会自动省略文件名中的末尾句点(.
),这是因为Windows操作系统对文件名有一些特殊的处理规则
-
查看靶场源代码
发现过滤规则中并没有删除文件末尾的点
-
上传木马文件,并在文件后缀名加
.
-
访问上传文件,注意将后面的
未删除点 删除点.
删除
10、利用::$DATA
,Upload第九关
::$DATA 是一个用于存储 NTFS 文件系统中的备用数据流(Alternate Data Stream)的特殊名称。备用数据流是一种 NTFS 文件系统的功能,它允许文件除了默认数据流之外,还可以包含一个或多个附加数据流。这些附加数据流可以用来存储额外的信息,但通常不会像默认数据流那样被广泛使用。
-
查看页面源码,并没有过滤
::$DATA
-
上传文件并用bp拦截,在文件后缀名后加
::$DATA
-
访问上传的文件,删除文件路径中文件名的::$DATA