一、什么是 Content-Type
我们在上传文件时利用 Burpsuite 进行抓包,如下图所示:
上传文件后台的源代码可能会对 Content-Type 进行规定,设置白名单 或 黑名单,这时就要利用Content-Type绕过上传含有恶意代码的 php文件。
二、代码审计
分析源代码,代码中设置了 Content-Type 白名单,只有符合代码规定的三种 Content-Type 的文件才可以上传。
现在逐字逐句分析这行 白名单 代码:
['upload_file']:代表上传文件的字段名。
['type'] :代表获取上传文件的类型(MIME类型)。常见的上传文件的类型如:jpeg/png/gif。
Content和Type两者用 / 来分隔。
三、通关思路
1、通过源代码已知题目对 Content-Type 设置了白名单,那我们通过抓包修改文件的 Content-Type即可。首先上传php文件,对其进行抓包。
2、修改 Content-Type,将其修改为 image/jpeg 或其他符合白名单的类型。
3、发包,成功上传文件。
4、在新标签页中打开图片,执行php代码。
---通关。