dvwa之File upload

文章介绍了PHP中的一句话木马概念,如何利用eval函数执行任意代码,并在文件上传漏洞场景下进行操作。在低级难度中,可以直接上传木马文件;中级增加了前端文件类型检查,可以通过修改后缀绕过;高级难度则检查图片尺寸,需伪造图片头信息。通过这些方法,攻击者可以获取webshell并控制服务器。
摘要由CSDN通过智能技术生成

理论知识

我们首先了解一下一句话木马,一句话木马的代码一般为:

<?php @eval($_POST['upload']);?>

eval()函数表示括号里的内容把他当做PHP语言执行,@的作用是后面的代码及时出错也不报错,这样可以不暴露我们的上传的参数(也就是upload),完后$_POST[‘upload’],upload在这里是一个全局变量,我们后期要执行的代码都要通过赋值给upload来执行。我们后期如果要用菜刀进行连接时,也需要把我们的全局变量(也就是upload)告诉菜刀。
一句话木马可以拿到网站的webshell(也就是后门),得到此权限我们就相当于拿到了网站服务器的管理权限。

文件上传漏洞就是系统可能没有对上传的文件进行过滤,导致上传的文件是木马文件或者其他恶意文件,所以靶场此关我们只要成功上传我们的一句话木马文件就算通关成功。

低级

先查看源码在这里插入图片描述
$target_path = DVWA_WEB_PAGE_TO_ROOT . “hackable/uploads/”
DVWA_WEB_PAGE_TO_ROOT是网站的根目录,后面是进入根目录后要打开的文件路径,这一句就是定位文件上传目录的地方。

$target_path .= basename( $_FILES[ ‘uploaded’ ][ ‘name’ ] )
basename()函数返回路径中的文件名部分。

后面的代码意思就是将我们上传的文件放到他指定的文件夹

在低级难度中文件随便上传,先制作一个一句话木马文件

<?php @eval($_POST['upload']);?>

在这里插入图片描述
发现可直接上传成功,连接菜刀还有个条件就是我们必须知道我们的一句话木马文件在服务器具体哪个文件夹下,必须是绝对路径。

我们知道此网站的IP(也就是我们自己的电脑),而文件上传路径也在回显中提示了(红色的字),也就是说我们的木马文件路径是:127.0.0.1//hackable/uploads/test (2).txt

OK,万事俱备,连接菜刀(连接密码就是我们一句话木马代码中的POST后面递交的参数,也就是upload),连接过程就不具体展示了。

中级

查看源码在这里插入图片描述

// 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 ) ) {
多了这几行代码,前三行是获取上传文件的名字,类型,大小信息,后面是判断上传的文件是否是一个小于10000的图片文件(也就是后缀是否是jpeg)。

这里我们可以先将我们的木马文件后缀改为jpeg,上传时,在通过BP抓包将它的后缀改为PHP(我理解的是他这个过滤属于前端过滤,所以通过前端这一关后面再改回PHP就毫无影响了)在这里插入图片描述

高级

老规矩先看源码在这里插入图片描述
strtolower(string) // 函数把字符串转换为小写。 getimagesize() // 函数用于获取图像大小及相关信息
getimagesize(string filename)函数,它会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。所以我们上传的文件必须为图片类型。

针对这种防护,在文件头部加上jpg格式的GIF89,如图:在这里插入图片描述在这里插入图片描述

后期还是要抓包,更改后缀才能连接菜刀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值