ctf web方向与php学习记录18之文件上传(2)

时间:2024-03-19 08:46:42

一,MIME 类型
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types
大家可以自行浏览
浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL,因此Web服务器在响应头中添加正确的MIME类型非常重要。如果配置不正确,浏览器可能会曲解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。

将 Content-Type:application/octet-stream
改成Content-Type: image/jpeg
ctf web方向与php学习记录18之文件上传(2)

MIME即文件类型检测,application/octet-stream是应用程序文件的默认值。意思是 未知的应用程序文件 ,浏览器一般不会自动执行或询问执行。
亲测:改为image/png或image/gif同样有效,但是其他独立类型无法绕过。
ctf web方向与php学习记录18之文件上传(2)其实,可以使用的更改类型其实有四个"image/jpeg", “image/png”, “image/gif”, “image/jpg”,在获取的php后端源码中不难发现,为什么修改类型可以顺利将文件上传。

ctf web方向与php学习记录18之文件上传(2)

二,文件头检查
由于只允许上传图片形式的文件,所以涉及制作图片木马的内容。
分析过程:
ctf web方向与php学习记录18之文件上传(2)首先,尝试MIME验证,发现未出现后缀错误,单出现了文件错误。
ctf web方向与php学习记录18之文件上传(2)这就意味着要进行第二次绕过。
操作过程:
1将php一句话木马后缀改为png。
2然后用winhwex修改前缀为(png图片的格式头是)89504E47
选中第一个字节,编辑->粘贴零字节,然后修改就可以了。
ctf web方向与php学习记录18之文件上传(2)3上传时将文件后缀修改为php。
原理:首先是后缀绕过,然后是文件错误绕过。
ctf web方向与php学习记录18之文件上传(2)最后找到flag
ctf web方向与php学习记录18之文件上传(2)