// 检查是否有文件被上传,如果文件不存在或不是通过 HTTP POST 上传的文件,输出错误信息 if (!file_exists($_FILES['file']['tmp_name']) ||!is_uploaded_file($_FILES['file']['tmp_name'])) { error('No file was uploaded.'); }
// 检查文件大小,如果文件大小超过 256000 字节,输出错误信息 if ($_FILES['file']['size'] > 256000) { error('Uploaded file is too large.'); }
// 检查文件类型 $finfo = finfo_open(FILEINFO_MIME_TYPE); // 获取文件的 MIME 类型 $type = finfo_file($finfo, $_FILES['file']['tmp_name']); finfo_close($finfo); // 如果文件类型不是 image/png,输出错误信息 if (!in_array($type, ['image/png'])) { error('Uploaded file is not PNG format.'); }
// 检查文件的宽高 $size = getimagesize($_FILES['file']['tmp_name']); // 如果文件的宽度或高度大于 256 像素,输出错误信息 if ($size[0] > 256 || $size[1] > 256) { error('Uploaded image is too large.'); } // 如果文件的类型不是 IMAGETYPE_PNG,输出错误信息并显示 FLAG1(可能是用于调试或意外情况) if ($size[2]!== IMAGETYPE_PNG) { // I hope this never happens... error('What happened...? OK, the flag for part 1 is: <code>'. getenv('FLAG1'). '</code>'); }
// 在会话中存储文件名 $session->set('avatar', $filename); // 显示一个成功的消息 flash('info', 'Your avatar has been successfully updated!'); // 重定向到根目录 redirect('/');
我们的最终目的是要通过这个if,使其输出flag
1 2 3 4
if ($size[2]!== IMAGETYPE_PNG) { // I hope this never happens... error('What happened...? OK, the flag for part 1 is: <code>'. getenv('FLAG1'). '</code>'); }