文件上传漏洞之——利用js对php文件上传进行限制,并绕过

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="zy1.php" onsubmit="return checkupload();" method="post" enctype="multipart/form-data">
    <input type="file" id="uploadfile" name="uploadfile">
    <input type="submit">
</form>
<script type="text/javascript">
    function checkupload() {
        var filetag = document.getElementById("uploadfile");
        var filename=filetag.value;
        var lastpos=filename.lastIndexOf(".")+1;
        var ext=filename.substring(lastpos);
        if(ext != "jpg"){
            alert("文件类型错误,上传失败")
            return false;
        }
    }
</script>
</body>
</html>

php代码

<?php
header("content-type:text/html;charset=utf-8");
if(isset($_FILES["uploadfile"])){
    $uploadfile=$_FILES["uploadfile"];
    $filename=$uploadfile["tmp_name"];
    $name=$uploadfile["name"];
    $extpos=strpos($name,".")+1;
    $ext=substr($name,$extpos);
    $destination="upload/".$uploadfile["name"];
    $destination=iconv("utf-8","gbk",$destination);
    move_uploaded_file($filename,$destination);
}

上传效果测试
上传jpg文件:
在这里插入图片描述上传其他文件:
在这里插入图片描述
绕过
将1.txt后缀改为1.jpg,上传后用bp抓包,修改1.jpg为1.txt,点击forward,即可上传成功
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值