upload-labs靶场通关指南(12-13关)

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

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

一、第十二关

(一)代码分析

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

(二)绕过思路

根据上述源码和提示,我们可以看出,在本关中,后台采用了白名单的方式对文件后缀名进行了过滤,并且对文件名采用了随机数加时间的方式进行了重命名。但是,根据提示,我们可以通过GET的方式上传save_path参数,该参数可以控制文件上传的路径。我们借助该参数,可以采取%00截断的方式,将上传文件的文件名和路径写到save_path参数中,然后加上一个%00的符号,来实现对上传文件文件名和后缀名的控制。

(三)绕过实战

根据上述原理,我们选择一个文件上传,并使用Burpsuit抓包,在抓到的数据包中,将文件后缀名修改为.png的格式,并修改save_path参数为…/upload/exp.php%00,如下所示:
在这里插入图片描述
之后,我们放行该数据包,可以发现文件上传成功过!
在这里插入图片描述
我们尝试访问上传的文件(注意,由于%00截断的影响,上传后的文件名称被改为exp.php),结果如下所示:
在这里插入图片描述
从上图可以看出,我们能够成功上传PHP脚本文件,并能够成功解析。

二、第十三关

(一)代码分析

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

(二)绕过思路

从上述源码和提示信息看,我们可以看到第13关相对于第12关,唯一的区别就在于第13关采用的是POST的方式上传数据。POST的GET上传的区别在于,%00是URL编码,对应的ASCII码的0x00,而GET方式上传的数据会自动的对%00进行解码,而POST方式上传的数据则不会自动的对%00进行解码。因此,我们采取和上一关同样的思路,但是要注意在POST方式提交的save_path参数中对%00进行解码。

(三)绕过实战

Burpsuit在抓包后,支持对数据包中的内容进行一系列的编码和解码操作。选中%00,然后右键,在弹出的选择框中选择“Convert selection”,然后选择“URL”,再选择“URL decode”,全部过程如下所示:
在这里插入图片描述
最终,修改后的数据包如下所示:
在这里插入图片描述
放行该数据包后,发现文件上传成功,并且能够被PHP解析,如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/126796827
今日推荐