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函数会重新生成图片,去除所有的非图像数据,我们隐藏在图片里的恶意代码就会被清除

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

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

相关推荐
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理6 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082856 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe6 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5