提交报文修改检测绕过
提交报文修改检测绕过(前端检测通用)
(1)首先选择正常的文件进行上传
(2)通过burpsuite进行截包改包或改包重放完成文件上传
这种方法前端检测绕过通用,不用理解具体前端的检测代码,直接进行上传报文的修改和提交
文件上传示例代码js_check.php或者通过upload-labs的PASS-01进行练习
<?php
//文件上传漏洞演示脚本之js验证
//设置上传之后的文件保存路径
$uploaddir = 'uploads/';
if (isset($_POST['submit'])) {
if (file_exists($uploaddir)) {
if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {
echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";
}
} else {
exit($uploaddir . '文件夹不存在,请手工创建!');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>文件上传漏洞演示脚本--JS验证实例</title>
<script type="text/javascript">
//检查上传的文件是不是符合条件
//绕过的方式大部分就是在这里的代码上面做操作
function checkFile() {
var file = document.getElementsByName('upfile')[0].value;
if (file == null || file == "") {
alert("你还没有选择任何文件,不能上传!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.jpeg|.png|.gif|.bmp|";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
document.getElementById("output").innerHTML = errMsg;
return false;
}
}
</script>
<body>
<h3>文件上传漏洞演示脚本--JS验证实例</h3>
<!--在这里调用检测的脚本函数,就是下面的onsubmit事件-->
<form action="" method="post" enctype="multipart/form-data" name="upload" onsubmit="return checkFile()">
<input type="hidden" name="MAX_FILE_SIZE" value="204800"/>
请选择要上传的文件:<input type="file" name="upfile"/>
<input type="submit" name="submit" value="上传"/>
<p id="output"></p>
</form>
</body>
</html>
上传可以上传的文件格式,例如.jpg

burpsuite截断

修改成phpinfo.php后点击forward

可以看到文件上传成功
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
通过upload-labs的PASS-01进行练习,步骤和上面一样,因为我是后面才知道upload-labs的
检测代码
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name) == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
οnsubmit="return false"是表示阻止表单提交,在上传之前,通过js判断文件后缀是否符合格式,不符合就阻止表单提交
浙公网安备 33010602011771号