当前位置: 首页 > web >正文

dvwa5——File Upload

LOW

在dvwa里建一个testd2.php文件,写入一句话木马,密码password

antsword连接

直接上传testd2.php文件,上传成功

MEDIUM

查看源码,发现这一关只能提交jpg和png格式的文件

把testd2.php的后缀改成jpg,上传时用bp抓包 ,抓到这些

把21行的jpg改成hph,放包,上传成功

HIGH

先看源码:

注意两个比较重要的函数

1.strrpos

$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);

这段作用是:找到文件名中最后一个.的位置,然后从.后一位开始截取,得到文件扩展名

2.strtolower

if((strtolower($uploaded_ext) == "jpg" || strtolower($uploaded_ext) == "jpeg" || ...)

这段作用是:将文件扩展名转换为小写,然后与小写的允许扩展名比较

所以优化点就是high只允许.jpg,.jpeg,.png扩展名,用strtolower防止大小写绕过,用strrpos获取最后一个'.'的位置来定位扩展名

还用这个函数检验了是否上传的是图像

所以我们接下来的目的是把刚才的一句话直接嵌入图片中上传 !!

copy合并(二进制拼接)

我们准备随意一张图片和一句话木马文档(damn.jpg和我们上文提到的testd2.php)

winr打开中端,进入这两个文件所在位置,输入如下代码

copy damn.jpg/b +testd2.php mm.jpg

 我们获得一张包含木马的图片

正常上传即可 

IMPOSSIBLE

分析源码

imagecreatefromjpeg函数会重新生成图片,去除所有的非图像数据,我们隐藏在图片里的恶意代码就会被清除

 这里还会随机生成文件名,我们无法猜测上传后的文件路径

❀❀❀ 完结撒花!!❀❀❀

http://www.xdnf.cn/news/10814.html

相关文章:

  • 1.6万字测评:deepseek-r1-0528横向对比 gemini-2.5-pro-0506和claude4
  • Cursor + Claude 4:海外工具网站开发变现实战案例
  • 基于PyQt5的相机手动标定工具:原理、实现与应用
  • 【Qt】构建目录设置
  • 从0开始学习R语言--Day16--倾向得分匹配
  • 相机--相机成像原理和基础概念
  • Cursor + Claude 4:微信小程序流量主变现开发实战案例
  • Springboot中Controller接收参数的方式
  • 功能管理:基于 ABP 的 Feature Management 实现动态开关
  • iptables常用命令
  • Spring Boot + MyBatis-Plus 读写分离与多 Slave 负载均衡示例
  • MyBatis 执行 SQL 报错:String 无法转换为 Long 的排查与解决实录
  • 【Linux内核】设备模型之udev技术详解
  • Unity异常上报飞书工具
  • 如何计算H5页面加载时的白屏时间
  • llama.cpp:纯 C/C++ 实现的大语言模型推理引擎详解一
  • 快速上手pytest
  • Java求职者面试:Spring、Spring Boot、Spring MVC与MyBatis技术深度解析
  • Kerberos面试内容整理-在 Linux/Windows 中的 Kerberos 实践
  • WPS word 已有多级列表序号
  • 2025年微信小程序开发:趋势、最佳实践与AI整合
  • Linux下使用nmcli连接网络
  • win11中使用grep命令
  • 若依+vue2实现模拟登录
  • JavaSec | H2数据库注入学习
  • DeepSeek 赋能智能建筑:区块链能耗管理的破局与革新
  • go get下载三方库异常
  • 【设计模式-3.7】结构型——组合模式
  • 【208】VS2022 C++ 32位整数和unsigned char数组之间互相转换
  • 升级centos 7.9内核到 5.4.x