决斗场 - 实验吧 WEB 上传绕过

题目链接:http://www.shiyanbar.com/ctf/1781


题目名字和提示都说的很明确,这题是一道上传绕过的题目,点开题目链接,可以看到一个文件上传的界面:


这里可以尝试随便上传一些文件,看看效果:

先尝试上传一个jpg文件:


上传jpg文件的提示为必须上传后缀名为php的文件才行,那么我们再上传一个php文件:


上传的结果是告诉我们仅支持jpg,gif,png后缀的文件。

仅支持上传jpg,gif,png后缀的文件,但是上传后又会提示必须上传后缀名为php的文件才行。

那么现在这个问题该怎么去解决呢,目前有一个思路就是我们上传一个jpg,gif,png后缀的文件但是我们另服务器认为这个文件是后缀名为php的文件。

怎么起实现这个思路呢,这里我们可以用到0x00截断上传的方法。那么什么是0x00截断上传呢?首先说一下这个截断上传的思路:在我们进行文件上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。具体怎么实现呢?

这里小编用到的依然是Burp Suite工具,对这个工具基础操作不太理解的欢迎去看小编对这个工具基础操作讲解的博客。

首先,这里我们一定上传的是一个jpg,gif,png后缀的文件,否则根本上传不上服务器就被挡住了。这里小编随便创了个1.jpg文件,里面啥也没有,其实有没有内容都无所谓的,我们的目的是上传上去而已。这里进行上传的同时,用Burp Suite拦截上传请求:


仔细观察这个上传的Post请求,这里我们可以看到Content-Disposition这个信息,上传路径是"/uploads/",文件名是"1.jpg",我们先发送到Repeater,现在我们可以对这个请求进行修改,那么我们需要修改哪些地方呢?因为实际上上传的最终地址就是dir + filename,所以我们可以先对这个路径进行修改,我们在dir上加上一个1.php,这样上传的路径就变为了/uploads/1.php,但是这样我们最终的上传地址就变成了/uploads/1.php1.jpg,如果就这样上传的话,实际上服务器还是将我们上传的文件作为jpg文件处理,我们需要做的就是再次对这个路径进行修改,使得最终的路径让我们的服务器认为我们上传的是php文件。

这里我们就可以开始进行0x00截断的方法,首先我们再次对dir进行修改,在后面随便加一个字符,比如加个*,这里随便加什么都好,我们只是为了让这个字符占一个字符的位置,接下来我们点击Hex,将这个字符修改为00(0x00的意思就是16进制下的00):

 ————————>

接下来点击go,我们就能达到上传成功的目的,并获得flag:



猜你喜欢

转载自blog.csdn.net/raalghul/article/details/78960477