一、环境
虚拟机:OWASP Broken Web Apps VM v1.2
WEB界面:(Security Level:medium)
二、使用步骤
1.查看PHP代码
<?php
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 '<pre>';
echo 'Your image was not uploaded.';
echo '</pre>';
} else {
echo '<pre>';
echo $target_path . ' succesfully uploaded!';
echo '</pre>';
}
}
else{
echo '<pre>Your image was not uploaded.</pre>';
}
}
?>
分析:代码加入了限制条件,上传文件的类型为image/jpeg,且限制上传文件大小为100000字节,上传一句话木马,通过burp修改文件类型为image/jpeg,就能上传成功,最后通过蚁剑连接
2.上传一句话木马
1.打开burp,浏览器使用代理模式
2.选择一句话木马文件,上传,并修改burp上文件类型
3.点击转发,浏览器成功上传一句话木马文件
3.使用蚁剑工具连接
可以查看到上传的文件
总结:PHP $_FILES函数
当客户端提交后,我们获得了一个$_FILES 数组
$_FILES数组内容如下:
$_FILES[‘myFile’][‘name’] 客户端文件的原名称。
$_FILES[‘myFile’][‘type’] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES[‘myFile’][‘size’] 已上传文件的大小,单位为字节。
$_FILES[‘myFile’][‘tmp_name’] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。