1、序言

今天下午半玩半学习的把文件上传做完了,来汇报一下工作。因为一篇一篇的写内容大致都相同所以直接放到了一起,用蚁剑连接找flag就不再赘述了。

2、解题

2.1、mime验证

(1)、什么是mime?
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
就是在http协议中增加了一项content—type来判断文件上传的类型
(2)、解题
若果直接上传php文件会得到如下的结果
CTHHub Web技能树-文件上传
所以直接上传一句话木马,并将content—type后的内容改为image/jpg
即可成功上传。

2.2、00绕过

(1)、何为00绕过?
00绕过即浏览器收到0x00、%00则表示文件已经结束不在计算00之后的内容。所以如果文件名1.php%00.jpg,文件判定时为jpg文件,但是实际接收时00处截断的原因,收到的文件为1.php
(2)、解题
我最开始想到的是直接截取文件名,直接将文件名改为1.php%00.jpg来达到绕过的目的,但是你会发现上传成功是成功了,但是不会给你地址,于是到repeater中找结果。
CTHHub Web技能树-文件上传
得到的源码是这样的
CTHHub Web技能树-文件上传
即文件上传后被改名,改名的内容由4部分组成,$ _GET[‘load’]、’|’、10-99的随机数、data(‘ymdhis’),这样看到我们能操作的只有$_GET,所以我们改变load中的内容为1.php%00.jpg这样上传的文件就到upload/1.php中,再通过蚁剑连接即可。

2.3、双写绕过

这个没有什么好说的,就是在上传时会将文件后缀过滤掉
我本来想到的是这样.php.php来双写后缀,但是发现结果直接变成了…
CTHHub Web技能树-文件上传在response中看看源码
CTHHub Web技能树-文件上传
可以看到它是直接将PHP这类关键词给替换为“”,也就是删掉了
所以我们抓包后改成.pphphp,这样它删掉一次后还是.php。

2.4、文件头检查

(1)、什么是文件头检查?
即当jpg之类的文件用winhex打开时,他们都有自己文件头来确定它是一个jpg文件。类似于pe文件中pe头和mz头。这道题即在上传后会判定文件来确定文件是否能上传。
(2)、解题
可以在一句话木马中加图片文件头,也可以在图片中加一句话木马,我不想用winhex打开,所以直接在图片中添加了一句话木马
CTHHub Web技能树-文件上传
同样的是需要修改图片为php类型
CTHHub Web技能树-文件上传
改完后发送,即可看到文件上传的位置。

相关文章: