upload-labs靶场通关指南(9-11关)

今天继续给大家介绍渗透测试相关知识,本文主要内容是upload-labs靶场通关指南(9-10关)

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、第九关

(一)代码分析

第九关关键代码如下所示:
在这里插入图片描述

(二)绕过思路

分析上述代码,发现这一关对文件后缀名的检测没有过滤::$DATA,Windows系统会把::$DATA当作文件流来进行处理,在文件名后面添加::$DATA可以绕过上述检测代码的查验,但是当PHP尝试将上述文件写入到Windows系统中的目录时,Windows系统就会自动的把文件后面的::$DATA删除,这样就使得该文件的后缀名称为了PHP,从而可以被解析执行了。

(三)绕过实战

利用上述检验代码的漏洞,我们可以抓包,然后在上传文件的名称后面添加::$DATA,修改后的数据包如下所示:
在这里插入图片描述
放行该数据包后,我们就可以看到该文件上传成功,如下所示:
在这里插入图片描述

我们在得到该文件的地址后,去掉后面的::$DATA,发现该文件已经被解析成功,如下图所示:
在这里插入图片描述

二、第十关

(一)代码分析

第十关关键代码如下所示:
在这里插入图片描述

(二)绕过思路

从上述代码可以看出,上述代码中既有对文件末尾的点符号的过滤,也有对::$DATA的过滤,含有对文件末尾空格的过滤,似乎是非常完善,但是依然存在漏洞。我们可以根据源码,根据过滤的顺序,来个性化的定制针对上述过滤的文件名。上述过滤的顺序是先删除文件最后的空格,再上传文件末尾的点,将文件后缀名提取并全部转化成小写,然后删除::$DATA字符串,最后再次删除文件末尾的空格。
针对上述过滤逻辑,我们可以构造文件名称为exp.php. .(注意该文件的两个点中间有个空格),这样,当我们的文件上传后,过滤逻辑会依次去除该文件的空格和最后面的点符号,这样该检测逻辑提取出的后缀名为一个点符号,这显然可以绕过黑名单的检测。而当该文件传输到目标文件夹后,由于Windows系统的特性,会自动删除文件名后面的两个点和一个空格,从而使得该文件的后缀名变成了PHP,这样就使得该文件可以被解析。

(三)绕过实战

根据上述逻辑,我们可以进行实战。抓包后将上传文件的名称修改为exp.php. .,修改后的数据包如下所示:
在这里插入图片描述
放行该数据包后,我们即可访问到我们上传的文件,并发现该文件能够被正常解析,如下所示:
在这里插入图片描述

三、第十一关

(一)代码分析

第十一关关键代码如下所示:
在这里插入图片描述

(二)绕过思路

从上述代码可以看出,并不完全是采用黑名单的过滤方式,而是对匹配黑名单的字符串替换成了空字符串,并且此过程仅仅进行了1次,因此显然我们可以使用双写绕过。
事实上,几乎所有类似的防护逻辑我们都可以采用双写的方式来进行绕过,这种绕过方式可以用在XSS漏洞攻击、SQL注入攻击以及本次实例中的文件上传漏洞攻击。

(三)绕过实战

根据上述分析,我们就可以进行上传的实战了,只需要把文件名改为exp.pphphp即可,这样当代码删除最中间的php以后,剩下的内容就会自动形成新的后缀名php。
上传文件如下所示:
在这里插入图片描述
在上传文件后,我们就可以访问我们上传的文件,发现该文件能够成功解析,如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/126794191