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

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.lryc.cn/news/2404848.html

相关文章:

  • cv::FileStorage用法
  • Go 语言 := 运算符详解(短变量声明)
  • 【优选算法】C++滑动窗口
  • 关于GitHub action云编译openwrt
  • 数据库学习(二)——MySQL语句
  • AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析
  • sql入门语句-案例
  • A Survey on the Memory Mechanism of Large Language Model based Agents
  • 华为OD机试 - 猴子吃桃 - 二分查找(Java 2025 B卷 200分)
  • 提取数据区域中表格
  • 【设计模式-5】设计模式的总结
  • 【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定
  • 链表好题-多种实现
  • oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?
  • OneNet + openssl + MTLL
  • 分享两个日常办公软件:uTools、PixPin
  • Golang基础学习
  • [学习] GNSS信号跟踪环路原理、设计与仿真(仿真代码)
  • Python实例题:Python计算微积分
  • 如何判断指针是否需要释放?
  • Spark 之 AQE
  • 随访系统安装的记录
  • NLP学习路线图(二十四):门控循环单元(GRU)
  • Doris查询Hive数据:实现高效跨数据源分析的实践指南
  • vsCode使用本地低版本node启动配置文件
  • 在Ubuntu上使用 dd 工具制作U盘启动盘
  • el-table表格增加序号列index vue2和vue3的写法
  • 【学习记录】如何使用 Python 提取 PDF 文件中的内容
  • Spark 之 DataFrame 开发
  • 嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析