文件上传-CTFHub
前言
本文是作者由CSDN博客迁移而来,原文地址:https://blog.csdn.net/2302_81178149/article/details/145459083
在众多的CTF平台当中,CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。
作者的CTFHub技能树汇总:
关于文件上传,作者认为upload-labs是一个很好的靶场。作者通过该靶场训练到了文件上传的大多数技巧。应对CTFHub这些题型时就已经得心应手,推荐大家也做一下。
upload-labs的wp:upload-labs通关全详解-CSDN博客
文件上传的技术总结:文件上传学习总结_文件上传学习 csdn-CSDN博客
无验证
我们先写一个一句话木马文件webshell_post.php。
1 |
|
一会用来上传
无验证就直接上传
告知上传路径
用蚁剑连接,添加数据
测试连接成功
添加成功
在html文件夹里发现flag
前端验证
先上传试试,发现禁止上传
果然是前端验证
禁用js试试
上传成功
还是连接蚁剑
Flag还在相同的位置
.htaccess
题目描述:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
将一句话木马webshell.php修改后缀名,改为webshell.jpg,制成图片马
然后上传
再制作一个.htaccess文件,写入
1 |
|
然后上传
然后我们用蚁剑连接图片马
找到flag
MIME绕过
上传一句话木马,用bp抓包
1 |
|
补充一下常见的类型
类型 | 描述 | 典型示例 |
---|---|---|
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 |
|
上传成功
蚁剑连接
出flag
00截断
还是上传之前制作的图片马,然后抓包
这里我们将上传路径修改,加上webshell.php%00
然后我们的文件就会保存在/upload/webshell.php,而不是原文件名webshell.jpg
上传成功,但是没有显示上传路径,因为通过00截断我们已知上传路径,就是/upload/webshell.php
用蚁剑连接
出flag
双写后缀
上传一句话木马,抓包
这里题目提示双写后缀,那我们就把filename改为webshell_post.pphphp
上传成功
用蚁剑连接,出flag
文件头检查
这里用jpg图片做示范,制作图片马,绕过文件头检查。
使用cmd命令:
在同时有图片和一句话木马的文件夹下打开cmd,然后使用以下命令。
1 |
|
意思是将一句话木马文件中的代码追加到图片中并重新生成一个叫webshell.php的代码。
比如作者图片名就叫“重庆森林不在重庆.jpg”,一句话木马的文件名还是“webshell.php”。
那么作者的命令为:
1 |
|
下图表示图片马制作成功。
但是有的图片制作后依然不能上传,这时候就需要大家换图片、换图片类型(比如png)或者手动修改文件头
制作以后我们开始利用,上传图片马,然后抓包
将filename的后缀改为php(因为我们需要用jpg或者png格式的文件头及MIME绕过,但jpg或者png格式无法执行里面的一句话木马,所以我们上传还是要保存为php格式)
上传成功
连接成功
出flag