upload-labs靶场通关详解:第二关
一、分析源代码
通过分析代码,可以看出这是后端验证。重点对$_FILES['upload_file']['type']这段代码进行解释。
$_FILES
:是一个超全局数组,它的用途是处理文件上传操作。当用户通过 HTML 表单上传文件时,服务器端会接收这些文件信息,并且将其存储在 $_FILES
数组中。
'upload_file':此为表单中文件上传字段的名称。在 HTML 表单里,文件上传的输入框一般是使用 <input type="file" name="upload_file">这样的形式,其中name属性的值就是'upload_file'。
'type':这是 $_FILES
数组里的一个索引,代表上传文件的 MIME 类型。MIME 类型是一种用来标识文件格式的标准,像 image/jpeg
表示 JPEG 格式的图片,image/png
表示 PNG 格式的图片,application/pdf
表示 PDF 文件等。浏览器通过MIME类型来区分文件,决定什么类型用什么形式来显示。
到这里可以得出思路,尝试通过bp抓包,修改文件的MIME类型进行验证绕过。
二、bp抓包绕过步骤
打开bp工具,上传php文件,抓取数据包,content-type就是文件类型,将其修改为允许上传的类型,如image/jpeg等。
绕过验证,文件上传成功。