解题链接:http://123.206.31.85:49166
打开题目链接,发现url变成了http://123.206.31.85:49166/index.php?file=hello.php很明显的文件包含字眼file,之后我们来看一下网页源代码
我们可以发现网页源代码里面有一个event,不过没什么用,我们在源代码最上方可以看到一行注释写着upload.php,我们尝试访问一下upload.php
访问到upload.php之后页面出现了文件上传的样式,从页面信息可以看出,网站通过白名单的方式限制了上传文件的类型,只能上传jpg、gif、png格式的图片文件,此时我们需要绕过文件格式检测,上传一个我们的文件。这里我使用了php的一个图片一句话木马文件。
思路:使用burpsuite进行抓包,构造图片木马文件,然后通过burpsuite修改文件类型进行绕过检测,最后使用菜刀进行连接获取flag。
修改之后点击Forward重传数据包,此时回到浏览器页面发现上传失败
说明不能通过仅仅修改文件类型进行绕过,那现在该怎么办呢?既然只要上传图片,那么我么可以构造图片木马进行文件上传,使用如下图方式进行制作木马文件:
写好语句之后保存,然后我们修改一下文件的扩展名为 .jpg.php,现在再使用burpsuite进行抓包然后重传数据包,使用%00截断。
Forward重传数据包之后,我们可以看到页面回显信息提示,文件上传成功,并返回了一个文件名,我们来访问一下这个文件名
访问文件名之后,页面信息空白,说明木马可以执行,接下来我们使用菜刀来连接一下
添加连接之后我们可以看到我们所上传文件的位置,另外最重要的是这里有一个类似隐藏着flag的txt文件,我们来打开它
打开之后就是我们要的flag了。
总结:在CTFweb题中关于文件类的题目经常会是这种文件上传漏送和文件包含漏洞一起使用,这时候就还是要合理利用方法,避免像我这样兜兜转转一大圈然后最后使用简单方法一样能做的出来。另外在这个题目中,关于使用的木马也是有要求的,不能使用最普遍使用的那个一句话木马进行图片木马的制作,像<?php @eval($_POST['pass']);?> 这个木马是没法办用的,也不是说没办法用,可以用但是最后菜刀连接不上我们的木马文件,原因是,在解析过程中<和php都被过滤掉了,这就很麻烦,这是用我们换一种木马的写法:<?=eval($_POST['shell']);这个木马最后是可以连接的。