dvwa上传php文件,DVWA之File Upload–文件上传

1、file upload文件上传,测试界面

5faea0f7476c756858a0edab8ddf1984.png

2、security=low时的上传

(1)直接上传php一句话木马,没有过滤,上传成功,根据提示路径链接菜刀

094df24605df91a6054f1383b755a99b.png

(2)菜刀链接,webshell拿到

6e98655a750bd755efe431209d376084.png

3、security=medium时的上传

(1)直接上传php格式文件,上传失败

0d5e7c6f64a375b77f822c8df9e53a9d.png

(2)测试上传图片格式文件,上传成功

8a8612d2c46a461df1e307a8e862d43a.png

(3)使用Burp Suite工具进行两次抓包,在compare中比较

b144afd04dbafb385937ee1ca2e210bd.png

(4)重新上传php木马,修改content-type属性,上传成功

ac3824b60722f948842535158cd54805.png

f72b200e6907968b54e5d557d3bb1015.png

47f28830bcd5c1c5d43efff36363ffaa.png

(5)菜刀链接,拿到webshell

ab3ef02857001948755787340911d4d6.png

下面分析源代码:

1、Low File Upload Source

if (isset($_POST['Upload'])) {

$target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";

$target_path = $target_path . basename( $_FILES['uploaded']['name']);

if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {

echo '

';

echo 'Your image was not uploaded.';

echo '

';

} else {

echo '

';

echo $target_path . ' succesfully uploaded!';

echo '

';

}

}

?>

2、Medium File Upload Source

if (isset($_POST['Upload'])) {

$target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";

$target_path = $target_path . basename($_FILES['uploaded']['name']);

$uploaded_name = $_FILES['uploaded']['name'];

$uploaded_type = $_FILES['uploaded']['type'];

$uploaded_size = $_FILES['uploaded']['size'];

if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){

if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {

echo '

';

echo 'Your image was not uploaded.';

echo '

';

} else {

echo '

';

echo $target_path . ' succesfully uploaded!';

echo '

';

}

}

else{

echo '

Your image was not uploaded.
';

}

}

?>

3、High File Upload Source

if (isset($_POST['Upload'])) {

$target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";

$target_path = $target_path . basename($_FILES['uploaded']['name']);

$uploaded_name = $_FILES['uploaded']['name'];

$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);

$uploaded_size = $_FILES['uploaded']['size'];

if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){

if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {

echo '

';

echo 'Your image was not uploaded.';

echo '

';

} else {

echo '

';

echo $target_path . ' succesfully uploaded!';

echo '

';

}

}

else{

echo '

';

echo 'Your image was not uploaded.';

echo '

';

}

}

?>

比较发现:

Low级别代码对上传文件几乎没有任何处理,可上传任意格式、大小文件

Medium级别代码对上传文件进行了格式判断,需要是 image/jpeg格式,并且文件限制了大小,不能太大,可以有效防止直接上传大马。此种方法可以通过修改包来绕过

High级别代码通过代码分析出文件的后缀名,当后缀名是jpg、JPG、jpeg、JPEG,并且文件大小小于100000时才可以上传,当上传的格式是Jpg,jPg,JPeg等大小写混写时,也上传失败,这是一种基于白名单的过滤策略,效果不错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值