CTFHub技能树.Web.文件上传题解

本文详细介绍了CTF比赛中常见的Web文件上传题目的解题思路,包括无验证、前端验证、.htaccess利用、MIME类型绕过、00截断、双写后缀和文件头检查等技巧。通过实例演示如何上传并执行一句话木马,以及如何规避各种防御措施。
摘要由CSDN通过智能技术生成

题目

0x00 原理

在存在文件上传的网页中上传带有恶意代码的文件并让此代码被执行,完成我们想要做的事。在这里,可以考虑上传一句话木马。
下面这行代码就是最常见也是最简单的php一句话木马。

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

上传并得知文件路径后可以使用中国蚁剑、菜刀、hackbar等工具执行我们想要执行的命令。
注意
这些题目都是最基本的文件上传知识点,请务必不要做多余的、不必要的事,比如给MIME绕过的题目加一个文件头什么的。

0x01 无验证

创建php文件,编辑内容为一句话木马,上传后显示路径。使用蚁剑连接,密码即为$_POST[' ']中的内容,这里是hack。连接成功后即可在文件目录中找到flag文件。

0x02 前端验证

这里有两种方法。可以考虑禁用网页JS脚本(chrome内核浏览器在设置中)。或者先把一句话木马文件后缀改为png/jpg/gif等允许上传的文件格式,点击上传后再利用Burp抓包将文件后缀改为php。

0x03 .htaccess

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

.htaccess配置文件可以让服务器将特定文件作为php文件格式解析。创建.htaccess文件(文件名就是.htaccess),编辑内容如下。

<FilesMatch "shell">
SetHandler application/x-httpd-php
</FilesMatch>

上传此配置文件后服务器会将所有文件名中含有shell的文件作为php文件解析。创建一句话木马文件,重命名为shell.png后上传,直接使用蚁剑连接该图片,可以看到已经连接成功了。

0x04 MIME绕过

服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的。
媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型 )是一种标准,用来表示文档、文件或字节流的性质和格式。它在IETF RFC 6838中进行了定义和标准化。

上传一句话木马文件后抓包修改Content-Type字段为image/pngimage/jpeg等合法的图片类型即可上传成功。

0x05 00截断

因为php底层是由C实现的,所以php对于字符串的处理也有很多C的特性,比如字符串截止符\0,利用这一点可以构造诸如xxx.php%00xxx.png这样的文件名,就可以绕过后缀的检测。但本题并不是那么简单。
查看页面源码,在

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值