Pass-01
观察页面,发现可以上传一个文件,尝试进行上传。
发现页面进行了提示,根据提示信息我们知道上传的途中对文件的后缀名进行了验证,只能上传白名单内的文件类型, 用弹窗进行错误提示的话证明是运用了前端验证。
可以通过以下方法绕过:
1.F12找到验证部分的代码,然后删除即可。
2.增加要上传的文件类型,跟第一种方法一样,也是找到代码所在位置进行修改即可。
3.第三种方法是我们先将要上传的文件后缀名修改成页面允许上传的类型,这样在点击上传后就可以通过前端的验证,用burp工具进行抓包,在burp中将文件后缀名改回原本想要上传的格式,再进行上传,这样就可以上传我们想要的类型文件而不会被前端的验证拦截。
Pass-02
上传了一个文件名后缀为.php的文件后提示类型错误,错误回显的方式不是弹窗,是页面直接提示,所以不是前端验证,查看源码。
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '文件类型不正确,请重新上传!';
}
} else {
$msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
}
}
用burp工具抓包,抓到之后修改content-type的类型为允许上传的类型,也就是判断语句中写到的类型。